it-swarm.com.de

CORS-Header 'Access-Control-Allow-Origin' fehlt

Ich rufe diese Funktion aus meinem asp.net-Formular auf und bekomme beim Aufruf von ajax einen Folgefehler auf der Firebug-Konsole.

Herkunftsübergreifende Anforderung blockiert: Dieselbe Origin-Richtlinie verhindert 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 einen alternativen Weg unternommen, konnte aber immer noch keine Lösung finden.

Hinweis: Ich habe keine Serverrechte, um serverseitige Änderungen (API/URL) vorzunehmen.

44
Mayank Modi

Dies geschieht im Allgemeinen, wenn Sie versuchen, auf die Ressourcen einer anderen Domäne zuzugreifen.

Dies ist eine Sicherheitsfunktion, um zu verhindern, dass jeder frei auf Ressourcen dieser Domäne zugreifen kann (auf die beispielsweise zugegriffen werden kann, um eine exakte Kopie Ihrer Website in einer Piraten-Domäne zu haben).

Der Header der Antwort, auch wenn sie 200 OK ist, lässt andere Quellen (Domänen, Port) nicht auf die Ressourcen zugreifen.

Sie können dieses Problem beheben, wenn Sie Inhaber beider Domänen sind:

Lösung 1: via .htaccess

Um dies zu ändern, können Sie dies in .htaccess der angeforderten Domäne -Datei schreiben:

    <IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
    </IfModule>

Lösung 2: Setzen Sie die Header auf die richtige Weise

Wenn Sie dies im Antwortheader der angeforderten Datei festlegen, können Sie jedem Zugriff auf die Ressourcen gewähren:

Access-Control-Allow-Origin : *

OR

Access-Control-Allow-Origin : http://www.my-domain.com

Frieden und Code;)

in Ihrer Ajax-Anfrage fügen Sie hinzu:

dataType: "jsonp",

nach Zeile:

type: 'GET',

sollte dieses Problem lösen .. 

hoffe das hilft dir

7
Pegasus Cozza

Sie müssen den 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");

  }
}
2
Ritesh Kumar

Serverseitig setzen Sie dies auf .php:

 header('Access-Control-Allow-Origin: *');  

Sie können einen bestimmten Domäneneinschränkungszugriff festlegen:

header('Access-Control-Allow-Origin: https://www.example.com')
1

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.

0