2011-12-01 11 views
7

Ben backbone.js modelini kullanıyorum. Modeli kaydettiğimde, firefox'ta sunucu tarafına HTTP OPTIONS yöntemi gönderir, ancak safari ile HTTP POST yöntemini gönderir.Http Option Method with Javascript isteği

Backbone.js ile ilgili bir sorun olmadığını biliyorum, CORS hakkında. Sadece sunucu tarafında GET, POST, PUT ve DELETE yöntemlerini kontrol edip HTTP OPTIONS yöntemiyle bir iş yapmayacağım. HTTP POST değil SEÇENEKLERİ ile bar.com i tüm tarayıcılarda kontrol edebilirsiniz nasıl bu kadar

, talep benim api.foo.com: talep api.foo.com ve api:

benim istenen URL benim API olduğunu ? ve api.foo.com'un içeriğini diğer tüm alanlardan gelen tüm isteklerle nasıl paylaşabilirim?

Not: Erişim-Control-Allow-Origin: *

cevap

7

SEÇENEKLER isteği aslında sözde preflight request of the CORS specification olduğunu ben zaten üzere sunucu tarafında gelen yanıt' ın başlıklarını değişti. Bu ön kontrol isteği, web tarayıcıları tarafından sunucunun hangi kaynaklardan gelen istekleri kabul ettiğini kontrol etmek için kullanılır. Ön kontrol talebine yanıt tatmin ederse, tarayıcı asıl isteği gönderir.

Bu belirtime uymak için sunucunuzu steps of preflight request processing çoğaltmak gerekir.

+0

Peki, sunucunun bir isteği kabul etmesinin hangi koşullar altında denetlenmeyeceğini tarayıcıya nasıl ayarlayabilirim? ve her gönderi isteğinden önce kontrol edecek? Çünkü, javascript'i çalıştıran her tarayıcıyı sadece sunucu yönteminin komut dosyasına gönderirim. –

+0

@davit Yapamazsınız. Çapraz kaynaklı istekler güvenlik nedenleriyle [orijinal XHR] (http://www.w3.org/TR/XMLHttpRequest/) ile mümkün değildi ([CSRF] (https://www.owasp.org/index. php/Çapraz Site_Request_Forgery)). [XHR seviye 2] (http://www.w3.org/TR/XMLHttpRequest2/) bunu mümkün kıldı ancak CORS şartnamesine uymak şartıyla. – Gumbo

+0

@davit Ve GET [basit bir yöntem] (http://www.w3.org/TR/cors/#simple-method), bir [basit çapraz-kaynak talebi] (http: // www olduğu söylenir) rağmen .w3.org/TR/cors/# basit-çapraz-menşe-istek) yalnızca * kuvvet öndüşmeli bayrak * yanlışsa (yani bir * XMLHttpRequestUpload * talebi değil) ve başka başlık alanları yoksa mümkündür [Basit başlık alanları] isteğinden daha fazla (http://www.w3.org/TR/cors/#simple-header). – Gumbo