Was ist das Problem CORS versucht zu lösen?
Ich gelesen habe bis auf CORS
und wie es funktioniert, aber ich finde eine Menge Dinge verwirrend. Zum Beispiel, es gibt viele details, über Dinge wie
Benutzer
Joe
ist die Nutzung von browserBrowserX
um Daten aussite.com
,
die wiederum sendet eine Anfrage anspot.com
. Um dies zu ermöglichen,spot
hat
spezielle Header... yada yada yada
Ohne viel hintergrund, ich verstehe nicht, warum Webseiten nicht zulassen würde, dass Anfragen von einigen stellen. Ich meine, Sie existieren, um zu dienen, Antworten auf Anfragen, nicht? Warum würden bestimmte Leute von Anforderungen, die nicht erlaubt sein?
Es würde wirklich zu schätzen eine schöne Erklärung (oder einen link zu einer) das problem, dass CORS
gemacht wird, zu lösen.
Also die Frage ist,
Was ist das problem CORS
ist die Lösung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Standard-Verhalten von web-Browsern, die das einleiten von Anforderungen von einer Seite via JavaScript (AUCH AJAX) ist, dass Sie Folgen Sie den same-origin-policy. Dies bedeutet, dass die Anfragen können nur per AJAX auf der gleichen domain (oder sub-domain). Anfragen zu einer völlig anderen Domäne schlägt fehl.
Diese Einschränkung besteht, weil die Anfragen auf andere domains, die von Ihrem browser mitschleppen würde Ihre cookies das bedeutet oft, Sie würden angemeldet sein, um die andere Seite. Also, ohne denselben Ursprung, jede Website konnte host JavaScript aufgerufen logout auf stackoverflow.com zum Beispiel, und es würde Sie Abmelden. Nun Stell dir vor, die Komplikationen, wenn wir reden über soziale Netzwerke, banking, etc.
So, in allen Browsern einfach einschränken, Skript-basierte Netzwerk ruft zu Ihrer eigenen domain zu machen, einfach und sicher.
Gibt es einige bekannte Workarounds im Ort (z.B. JSONP, die nicht enthalten cookies in der Anforderung), aber diese sind keine dauerhafte Lösung.
CORS können diese cross-domain-requests zu passieren, aber nur, wenn jede Seite sich in CORS-Unterstützung.
Access-Control-Allow-Origin
auf dem server? Wie wäre cross-origin-requests auch bekommen, wenn es dem browser erlauben es nicht?First, let ' s talk about der same-origin-policy. Ich zitiere aus eine frühere Antwort von mir:
(Beachten Sie, dass ich gesagt habe "credential-beschränkt", aber es kann auch sein,Topologie-eingeschränkte Inhalte, wenn eine website ist nur sichtbar für bestimmte IP-Adressen).
Manchmal, aber es ist nicht
evil.com
versuchen, einen Blick in Ihren Posteingang. Manchmal, es ist nur eine hilfreiche website (sagen wirhttp://goodsite.foo
) versucht, eine öffentliche API von einem anderen Ursprung (sagen wirhttp://api.example.com
). Die Programmierer, die hart gearbeitet, aufapi.example.com
wollen alle Ursprünge für den Zugriff auf Ihre Website-Inhalte frei. In diesem Fall, den API-server aufapi.example.com
können CORS-Header zu ermöglichengoodsite.foo
(oder jede andere anfordernde Herkunft) für den Zugriff auf die API-Antworten.So, in Summe gehen wir davon aus, die als Standard cross-origin-Zugriff ist eine schlechte Sache (man denke an jemanden, der versucht zu Lesen, Ihren Posteingang), aber es gibt Fälle, in denen es eine gute Sache (denken Sie an eine website versucht, Zugriff auf einen öffentlichen API). CORS ermöglicht es der gute Fall zu geschehen, wenn die angeforderte Seite will, dass es geschieht.
CORS
Header, richtig? Wennevil.com
hat ein Skript für den Zugriff auf meine bank-Website, wird mein browser sendet eine test-Anfrage oder etwas zu überprüfen, werden diese Header, die zwar nicht anbringen, meine cookies?Gibt es Sicherheit und Datenschutz Gründen für nicht so dass Anfragen von überall. Wenn Sie besucht meine website, die Sie würde nicht wollen, dass mein code, um Anfragen zu Facebook, reddit, Ihrer bank, eBay, etc. aus Ihrem browser Ihre cookies, richtig? Meine Seite würde dann in der Lage sein, um Beiträge Lesen Informationen, Bestellungen, etc. in Ihrem Namen. Oder auf meinen Namen mit Ihren Konten.