SORU
17 Mayıs 2012, PERŞEMBE


Nasıl-Control-Allow-Access Kökenli çalışma Başlığı?

Görünüşe göre, tamamen anlambilimi ben yanlış anlamışım. Şöyle bir şey düşündüm:

  1. Bir istemci javascript kodu mycode.js indir http://siteA -kökeni.
  2. Mycode.js yanıt Başlığı içerirAccess-Control-Köken İzin ver: http://siteBsanmıştım demek ki MyCode.js cross-origin site için başvurular B . yapmak için izin verildi
  3. İstemci bazı işlevler sırayla iyi olmalı http://siteb,, çapraz menşe istekleri olmasına rağmen istekleri olan mycode.js, tetikler.

Evet, ben hatalıyım. Bu gibi çalışmaz. Yani, http://en.wikipedia.org/wiki/Cross-origin_resource_sharing okudum ve http://www.w3.org/TR/cors/ okumaya çalıştı.

Bir şey kesin - hala nasıl bu başlığı kullanmak gerekiyor anlamıyorum.

Bir iki site ve site B. tam kontrol edemiyorum Nasıl javascript kodu sitedeki kaynaklara erişmek için Bir site B, bu başlığı kullanarak karşıdan etkinleştirebilirim?

S. S.

JSONP kullanmak istemiyorum.

CEVAP
17 Mayıs 2012, PERŞEMBE


Access-Control-Allow-Origin CORS (Cross-Origin Resource Sharing) header.

Site B Site içeriği almaya çalıştığında, Site B Access-Control-Allow-Origin yanıt bir başlık Bu sayfanın içeriği belirli kökenleri erişebileceği tarayıcı anlatmak için gönderebilirsiniz. (Birkökenlibir*.* 34) Varsayılan olarak, Site B Sayfa not accessible to any other origin; Access-Control-Allow-Origin Başlığı kullanarak çapraz kökeni, özel talep kökenleri tarafından erişim için bir kapı açar.

Site B Site için erişilebilir hale getirmek isteyen her kaynak/sayfa, Site B yanıt başlığı ile sayfalarına hizmet eder:

Access-Control-Allow-Origin: http://siteA.com

Modern tarayıcılar çapraz etki alanı istekleri düpedüz engellemez. Site Sitesinden bir sayfa B istekleri, tarayıcı aslında istenen sayfayı almak olacaktırAğ Düzeyindeve kontrol edin, eğer yanıt listesi Site başlıklarını Bir izin isteyenin bir etki alanı olarak. Eğer Site B değil gösterilen Bir Site izin verilen erişim Bu sayfa, tarayıcı tetik XMLHttpRequesterror olay ve inkar yanıt veri isteyen bir JavaScript kodu.

Basit olmayan istekleri

Ağ düzeyde ne olabilirbirazdaha karmaşık. Eğer istek ** 36, tarayıcının ilk veri-daha az gönderir bir "" SEÇENEKLERİ istek, sunucu isteği kabul edeceğini doğrulamak için. ön kontrol ise İsteği olmayan basit olduğunda (veya ikisini birden)

  • bir HTTP GET fiilini kullanarak veya SONRASI (örneğin KOYUN) SİLİN
  • kullanarak basit olmayan başlıkları isteği; sadece basit istekleri başlıkları:
    • Accept
    • Accept-Language
    • Content-Language
    • 14* *(bu değeri application/x-www-form-urlencoded, multipart/form-data text/plain yalnızca basit)

Eğer sunucu yanıt için ön kontrol SEÇENEKLERİ ile uygun yanıt başlıklar (Access-Control-Allow-Headers basit olmayan başlıkları Access-Control-Allow-Methods olmayan basit fiiller) maçı olmayan basit fiil ve/veya basit olmayan başlıkları, tarayıcı gönderir gerçek istek.

application/json, tarayıcı basit olmayan Content-Type değeri /somePage, için bir istek göndermek istiyor bu Site diyelim ki ilk ön kontrol isteği gönderir:

OPTIONS /somePage HTTP/1.1
Origin: http://siteA.com
Access-Control-Request-Method: PUT
Access-Control-Request-Headers: Content-Type

24* and Access-Control-Request-Headers *tarayıcı tarafından otomatik olarak eklenir; onları eklemek zorunda değilsiniz unutmayın. Bu ön kontrol SEÇENEKLERİ alır başarılı yanıt başlıkları:

Access-Control-Allow-Origin: http://siteA.com
Access-Control-Allow-Methods: GET, POST, PUT
Access-Control-Allow-Headers: Content-Type

Gerçek isteği ön kontrol yapıldıktan sonra () gönderirken, davranış, basit bir isteği nasıl işleneceğini aynı şeydir. Diğer bir deyişle, başarılı olan olmayan basit bir istek basit bir istek (örneğin, hala Access-Control-Allow-Origin tekrar gerçek yanıtı göndermelidir sunucu) olarak kabul edilir.

Tarayıcıları gerçek bir istek gönderir:

PUT /somePage HTTP/1.1
Origin: http://siteA.com
Content-Type: application/json

{ "myRequestContent": "JSON is so great" }

Ve sunucu basit bir istek verir gibi Access-Control-Allow-Origin,: geri gönderir

Access-Control-Allow-Origin: http://siteA.com

-Basit olmayan istekleri hakkında biraz daha fazla bilgi için Understanding XMLHttpRequest over CORS bkz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • katherine gomez

    katherine go

    1 Aralık 2011
  • Schmittastic Jr.

    Schmittastic

    19 Mart 2013
  • spederson7

    spederson7

    17 Temmuz 2006