Dieses Thema wurde ein paar Mal gefragt, aber ich verstehe immer noch nichts:
Wenn ich Antworten über lese
Kein 'Access-Control-Allow-Origin'-Header
Problem, es heißt, dass eine Einstellung auf dem angeforderten Server festgelegt werden sollte, um domänenübergreifend zu ermöglichen : add_header 'Access-Control-Allow-Origin' '*';
.
Aber bitte sagen Sie mir, warum es auf Nachfrage des Postboten (der ein Kunde ist) wie ein Zauber funktioniert und ich eine Antwort vom angeforderten Server habe.
Vielen Dank
Antworten:
Wie @Musa es kommentiert, scheint der Grund der folgende zu sein:
Übrigens, hier ist eine Chrome-Erweiterung , damit sie in Ihrem Browser funktioniert (diese ist für Chrome, aber Sie können sie entweder für FF oder Safari finden).
Überprüfen Sie hier, ob Sie mehr über Cross-Origin erfahren möchten und warum es für Erweiterungen funktioniert.
quelle
Wenn Sie eine Website verwenden und ein Formular zum Übermitteln von Informationen ausfüllen (z. B. Ihre Sozialversicherungsnummer), möchten Sie sicher sein, dass die Informationen an die Website gesendet werden, an die sie Ihrer Meinung nach gesendet werden. Daher wurden Browser so eingerichtet, dass sie standardmäßig sagen: "Senden Sie keine Informationen an eine andere Domain als die besuchte Domain."
Irgendwann wurde das zu einschränkend, aber die Standardidee bleibt in den Browsern. Lassen Sie die Webseite keine Informationen an eine andere Domain senden. Dies ist jedoch alles Browser-Überprüfung. Chrome, Firefox usw. haben einen Code integriert, der besagt: "Bevor Sie diese Anfrage senden, überprüfen Sie, ob das Ziel mit der besuchten Seite übereinstimmt."
Bei Postman (oder CURL in der cmd-Zeile) sind diese Schecks nicht integriert. Sie interagieren manuell mit einer Site, sodass Sie die volle Kontrolle darüber haben, was Sie senden.
quelle
CORS
(Cross-Origin Resource Sharing) undSOP
(Same-Origin Policy) sind serverseitige Konfigurationen, die Clients durchsetzen möchten oder nicht .Bezogen auf Kunden
CSRF
Angriffen zu vermeiden .quelle
Alle Antworten hier sind zwar eine wirklich gute Erklärung dafür, was cors ist, aber die direkte Antwort auf Ihre Frage wäre aufgrund der folgenden Unterschiede zwischen Postbote und Browser.
Browser: Sendet einen
OPTIONS
Anruf, um den Servertyp zu überprüfen und die Header abzurufen, bevor eine neue Anforderung an den API-Endpunkt gesendet wird. Wo es prüftAccess-Control-Allow-Origin
. Wenn Sie dies berücksichtigen,Access-Control-Allow-Origin
gibt der Header nur an, welche CROSS ORIGINS zulässig sind, obwohl der Browser standardmäßig nur denselben Ursprung zulässt.Postman: Sendet direkte
GET
,POST
,PUT
,DELETE
usw. Anfrage , ohne zu überprüfen , welche Art von Server ist und immer den HeaderAccess-Control-Allow-Origin
mit HilfeOPTIONS
Aufruf an den Server.quelle
Im Allgemeinen wird Postman zum Debuggen und in der Entwicklungsphase verwendet. Aber falls Sie es sogar vom Postboten blockieren möchten, versuchen Sie dies.
quelle
app.js
wenn Sienode app.js
den Server ausführen.Verwenden Sie das Browser / Chrome Postman Plugin, um die CORS / SOP wie eine Website zu überprüfen. Verwenden Sie stattdessen eine Desktop-Anwendung, um diese Steuerelemente zu vermeiden.
quelle