2013-03-19 30 views
13

Biz yerel olarak çalışan bir sunucuya bir AJAX isteği yayınladıklarını için Origin başlığını ekleyerek Krom, yaniaynı kaynak talebi

xhr.open("POST", "http://localhost:9000/context/request"); 
xhr.addHeader(someCustomHeaders); 
xhr.send(someData); 

bu javascript da localhost'tan sunulmakta olduğu yürütülmekte olan, sayfa: 9000, Yani bu tamamen aynı bir istek gibi görünüyor.

Ancak, bazı nedenlerden ötürü, Google Chrome, sonuçta oluşan isteğe her zaman bir Kökeni üstbilgisi ayarlar. Böylece, sunucumuzun isteği CORS isteğine bağlı olarak yanlış varsayımı temel alarak engellemesi sağlanır.

Bu, Firefox'ta gerçekleşmez.

Ayrıca, ne Firefox ne de Chrome, OPTIONS ön kontrol isteği göndermiyor; Neden Origin ve Custom üstbilgileri sunucu tarafından izin verildiğinden emin olmak için ilk ön kontrol edilmeden bir Origin üstbilgisi ayarlandı?

Bu durumda neler olup bittiğini bilen var mı? CORS spesifikasyonunu yanlış anlıyor muyuz?

+0

bakınız http://seclab.stanford.edu/websec/csrf/csrf.ppt. Bir CSRF koruma mekanizmasıdır. – user239558

cevap

22

Chrome ve Safari, aynı kaynak POST/PUT/DELETE istekleri üzerinde bir Origin başlığı içerir (aynı kaynak GET isteklerinin bir Başlangıç ​​üstbilgisi yoktur). Firefox, aynı kökenli isteklerde Origin başlığı içermez. Tarayıcılar CORS yanıt başlıklarını aynı kaynak istekleri için beklemezler, bu nedenle aynı kaynaklara yönelik bir istek CORS başlıklarına sahip olup olmadığına bakılmaksızın kullanıcıya gönderilir.

Host başlığını kontrol etmenizi öneririz ve Origin başlığındaki etki alanı eşleşiyorsa, bu isteği CORS olarak kabul etmeyin. başlıkları şöyle görünür: Host sadece domain ve bağlantı noktasını sahip olurken Origin, düzeni (http/https), etki alanını ve bağlantı noktasını olacağı

Host: example.com 
Origin: http://example.com 

Not. RFC 6454 göre

+0

Bu çok anlam ifade ediyor - CORS filtresini uyumlu bir şekilde değiştireceğiz. Teşekkürler! –

13

- Web Menşei Konsept - Menşe varlığı aynı kaynak talepleri dahil, herhangi bir HTTP isteği için aslında yasaldır:

http://tools.ietf.org/html/rfc6454#section-7.3

"kullanıcı Aracısı MAY, herhangi bir HTTP isteğinde bir Origin başlık alanı içerir. " Kökeni başlığı aynı kaynak POST istekleri için iyidir neden cevap

İlgili konular