jQuery Ajax Notes
- Aufgrund von Sicherheitsbeschränkungen des Browsers unterliegen die meisten Ajax- Anforderungen derselben Ursprungsrichtlinie . Die Anforderung kann Daten aus einer anderen Domäne, Subdomäne, einem anderen Port oder einem anderen Protokoll nicht erfolgreich abrufen.
- Skript- und JSONP-Anforderungen unterliegen nicht denselben Einschränkungen für Ursprungsrichtlinien.
Es gibt einige Möglichkeiten, die domänenübergreifende Barriere zu überwinden :
Es gibt einige Plugins, die bei domänenübergreifenden Anfragen helfen :
Kopf hoch!
Der beste Weg, um dieses Problem zu lösen, besteht darin, einen eigenen Proxy im Back-End zu erstellen, sodass Ihr Proxy auf die Dienste in anderen Domänen verweist, da im Back-End nicht dieselbe Einschränkung für Ursprungsrichtlinien vorhanden ist . Wenn Sie dies im Back-End nicht tun können, beachten Sie die folgenden Tipps.
Warnung!
Die Verwendung von Proxys von Drittanbietern ist keine sichere Vorgehensweise, da sie Ihre Daten verfolgen können, sodass sie mit öffentlichen Informationen verwendet werden können, jedoch niemals mit privaten Daten.
Die unten gezeigten Codebeispiele verwenden jQuery.get () und jQuery.getJSON () . Beide sind Kurzmethoden von jQuery.ajax ()
CORS überall
CORS Anywhere ist ein node.js-Proxy, der der Proxy-Anforderung CORS-Header hinzufügt.
Um die API zu verwenden, stellen Sie der URL einfach die API-URL voran. (Unterstützt https : siehe Github-Repository )
Wenn Sie domänenübergreifende Anforderungen bei Bedarf automatisch aktivieren möchten, verwenden Sie das folgende Snippet:
$.ajaxPrefilter( function (options) {
if (options.crossDomain && jQuery.support.cors) {
var http = (window.location.protocol === 'http:' ? 'http:' : 'https:');
options.url = http + '//cors-anywhere.herokuapp.com/' + options.url;
//options.url = "http://cors.corsproxy.io/url=" + options.url;
}
});
$.get(
'http://en.wikipedia.org/wiki/Cross-origin_resource_sharing',
function (response) {
console.log("> ", response);
$("#viewer").html(response);
});
Welchen Ursprung auch immer
Was auch immer Origin ist ein domänenübergreifender Jsonp- Zugriff. Dies ist eine Open Source-Alternative zu anyorigin.com .
Um die Daten von google.com abzurufen , können Sie dieses Snippet verwenden:
// It is good specify the charset you expect.
// You can use the charset you want instead of utf-8.
// See details for scriptCharset and contentType options:
// http://api.jquery.com/jQuery.ajax/#jQuery-ajax-settings
$.ajaxSetup({
scriptCharset: "utf-8", //or "ISO-8859-1"
contentType: "application/json; charset=utf-8"
});
$.getJSON('http://whateverorigin.org/get?url=' +
encodeURIComponent('http://google.com') + '&callback=?',
function (data) {
console.log("> ", data);
//If the expected response is text/plain
$("#viewer").html(data.contents);
//If the expected response is JSON
//var response = $.parseJSON(data.contents);
});
CORS-Proxy
Der CORS-Proxy ist ein einfacher node.js-Proxy, mit dem die CORS-Anforderung für jede Website aktiviert werden kann. Es ermöglicht Javascript-Code auf Ihrer Site, auf Ressourcen in anderen Domänen zuzugreifen, die normalerweise aufgrund der Richtlinie mit demselben Ursprung blockiert würden.
Wie funktioniert es? CORS Proxy nutzt die Cross-Origin Resource Sharing, eine Funktion, die zusammen mit HTML 5 hinzugefügt wurde. Server können festlegen, dass Browser anderen Websites erlauben sollen, von ihnen gehostete Ressourcen anzufordern. CORS-Proxy ist einfach ein HTTP-Proxy, der Antworten mit der Aufschrift "Jeder kann dies anfordern" einen Header hinzufügt.
Dies ist ein weiterer Weg, um das Ziel zu erreichen (siehe www.corsproxy.com ). Alles was Sie tun müssen, ist http: // und www zu entfernen. von der URL, für die ein Proxy erstellt wird, und stellen Sie die URL mit voranwww.corsproxy.com/
$.get(
'http://www.corsproxy.com/' +
'en.wikipedia.org/wiki/Cross-origin_resource_sharing',
function (response) {
console.log("> ", response);
$("#viewer").html(response);
});
CORS-Proxy-Browser
Kürzlich habe ich dieses gefunden, es beinhaltet verschiedene sicherheitsorientierte Cross Origin Remote Sharing-Dienstprogramme. Aber es ist eine Blackbox mit Flash als Backend.
Sie können es hier in Aktion sehen: CORS-Proxy-Browser
Holen Sie sich den Quellcode auf GitHub: koto / cors-proxy-browser