Ich rufe diese Funktion von meinem asp.net-Formular aus auf und erhalte beim Aufrufen von ajax den folgenden Fehler in der Firebug-Konsole.
Ursprungsübergreifende Anforderung blockiert: Die gleiche Ursprungsrichtlinie verbietet das Lesen der Remote-Ressource unter http: //anotherdomain/test.json . (Grund: CORS-Header 'Access-Control-Allow-Origin' fehlt).
var url= 'http://anotherdomain/test.json';
$.ajax({
url: url,
crossOrigin: true,
type: 'GET',
xhrFields: { withCredentials: true },
accept: 'application/json'
}).done(function (data) {
alert(data);
}).fail(function (xhr, textStatus, error) {
var title, message;
switch (xhr.status) {
case 403:
title = xhr.responseJSON.errorSummary;
message = 'Please login to your server before running the test.';
break;
default:
title = 'Invalid URL or Cross-Origin Request Blocked';
message = 'You must explictly add this site (' + window.location.origin + ') to the list of allowed websites in your server.';
break;
}
});
Ich habe es anders gemacht, konnte aber immer noch keine Lösung finden.
Hinweis: Ich habe keine Serverrechte, um serverseitige Änderungen (API / URL) vorzunehmen.
anotherdomain
Unterstützung JSONP? Andernfalls lesen Sie diesen doppelten Thread stackoverflow.com/questions/20035101/…anotherdonain
unterstützt CORS nicht. Ich bekomme einetitle = 'Invalid URL or Cross-Origin Request Blocked';
Nachricht.cors
Antworten:
Dies geschieht im Allgemeinen, wenn Sie versuchen, auf die Ressourcen einer anderen Domain zuzugreifen.
Dies ist eine Sicherheitsfunktion, mit der verhindert wird, dass jeder frei auf Ressourcen dieser Domain zugreifen kann (auf die beispielsweise zugegriffen werden kann, um genau dieselbe Kopie Ihrer Website in einer Piratendomäne zu haben).
Der Header der Antwort, auch wenn es 200OK ist, erlaubt anderen Ursprüngen (Domänen, Port) nicht, auf die Ressourcen zuzugreifen.
Sie können dieses Problem beheben, wenn Sie Eigentümer beider Domänen sind:
Lösung 1: über .htaccess
Um dies zu ändern, können Sie dies in den .htaccess der angeforderten Domänendatei schreiben :
<IfModule mod_headers.c> Header set Access-Control-Allow-Origin "*" </IfModule>
Wenn Sie nur einer Domain Zugriff gewähren möchten, sollte der .htaccess folgendermaßen aussehen:
<IfModule mod_headers.c> Header set Access-Control-Allow-Origin 'https://my-domain.tdl' </IfModule>
Lösung 2: Stellen Sie die Überschriften richtig ein
Wenn Sie dies in den Antwortheader der angeforderten Datei setzen, können alle auf die Ressourcen zugreifen:
Access-Control-Allow-Origin : *
ODER
Access-Control-Allow-Origin : http://www.my-domain.com
Frieden und Code;)
quelle
Correct Answer
ich versucht habe<IfModule mod_headers.c> Header set Access-Control-Allow-Origin "*" </IfModule>
und es funktioniert wie ein Zauber :)Fügen Sie in Ihrer Ajax-Anfrage Folgendes hinzu:
dataType: "jsonp",
nach Zeile:
type: 'GET',
sollte dieses Problem lösen ..
hoffe das hilft dir
quelle
Auf der Serverseite wird dies auf .php gesetzt:
header('Access-Control-Allow-Origin: *');
Sie können einen bestimmten Zugriff auf Domäneneinschränkungen festlegen:
header('Access-Control-Allow-Origin: https://www.example.com')
quelle
Sie müssen Ihren serverseitigen Code wie unten angegeben ändern
public class CorsResponseFilter implements ContainerResponseFilter { @Override public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException { responseContext.getHeaders().add("Access-Control-Allow-Origin","*"); responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT"); } }
quelle
Sie müssen die Idee haben, warum Sie dieses Problem bekommen, nachdem Sie die obigen Antworten durchgearbeitet haben.
self.send_header('Access-Control-Allow-Origin', '*')
Sie müssen nur die obige Zeile auf Ihrer Serverseite hinzufügen.
quelle