2016-05-20 8 views
0

Ich versuche herauszufinden, was ist Cors. In MDN es beschreiben als:Cors und Web-Ressource

Eine Ressource macht eine Quer Ursprungs HTTP-Anforderung, wenn es eine Ressource von einer anderen Domäne als die, die anfordert, die die erste Ressource selbst dient.

Ich bin nicht sicher, ich weiß, was eine Web-Ressource ist. Außerdem verstehe ich thats cors ermöglicht mir, Web-Ressource aus einer anderen Domäne in meiner Domäne, indem Sie die Domäne in die Kopfzeile, aber ist es nur Konvention oder etwas mehr als das?

Antwort

0

Lassen Sie mich versuchen, eine kurze Erklärung zu geben.

Webressource

Eine Web-Ressource ist alles, was Sie im Web anfordern. Das könnte ein Bild, eine Json-Payload, ein PDF, eine HTML-Seite usw. sein. Es gibt nicht mehr als das.

CORS

Wenn Sie einen Ajax-Request in einem Browser (in der Regel von Javascript) zu tun, werden Sie zu machen Anfragen an Ressourcen (URLs) auf der gleichen Domäne der Regel begrenzt. Z.B. www.x.com kann nur Ressourcen von www.x.com anfordern. Stellen wir uns vor, Sie haben eine Webseite unter www.x.com, die eine Ressource von api.x.com erhalten möchten. Dies ist nur möglich, wenn auf dem Server (api.x.com) CORS aktiviert ist.

Wie funktioniert es? Nun, die Strömung ist so (viel vereinfacht).

Wenn Sie eine Ajax-Anfrage zu tun, beispielsweise eine GET-Anforderung für eine json Nutzlast, sieht der Browser diese und gibt eine OPTIONS-Anforderung an den Server, in dem es heißt, wer es ist (www.x.com im Origin Header). Der Server soll dann antworten mit einer Antwort mit einem Header, der sagt, dass es für www.x.com OK ist, die GET-Anfrage zu machen. Der Server tut dies, indem er einen Header Access-Control-Allow-Origin: www.x.com hinzufügt. Wenn der zulässige Ursprung mit dem Ursprung in der Anforderung übereinstimmt, gibt der Browser die GET-Anforderung aus, und die Json-Nutzlast wird vom Server zurückgegeben. Wenn der zulässige Ursprung nicht übereinstimmt, verweigert der Browser die Anforderung und zeigt einen Fehler in der Konsole an.

Wenn Sie den Client (www.x.com) tun und verwenden - sagen wir Jquery - müssen Sie nichts tun. Alles passiert automatisch. Wenn Sie den Server verwenden (api.x.com), müssen Sie CORS aktivieren. Wie das gemacht wird, variiert sehr, aber http://enable-cors.org/server.html hat eine nette Anleitung, wie man es auf verschiedenen Servertypen macht. Sie haben auch einige detailliertere Anleitungen, wie es funktioniert. Insbesondere könnten wollen Sie hier einen Blick https://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/

Ich hoffe, das Sie heraus hilft ein wenig

+0

Hey @ paz-Reingold. Hat meine Antwort Ihnen geholfen? Wenn dies der Fall ist, markieren Sie meine Antwort als "akzeptierte Antwort", indem Sie auf das Häkchen neben der Antwort klicken. Wenn nicht - bitte lassen Sie mich wissen, warum nicht. – joensindholt