2011-06-20 16 views
6

JQuery GET isteğinde Origin üstbilgisini dahil etmek için Safari'yi zorlayın

Gönderen:

$.get('https://api.example.com', { foo: 'bar' }) 
    .success(getSuccess) 
    .error(getError); 

Chrome ve Firefox'ta çalışıyor ancak Safari'de çalışmıyor. Safari, önkontrol OPTIONS isteğinde bulunmaz veya Origin: https://app.example.com üstbilgisini içerir, böylece sunucu Access-Control-Allow-Origin: https://app.example.com üstbilgisini döndürmez.

Safari'yi Origin üstbilgisini dahil etmek veya önkontrol OPTIONS isteğini gerçekleştirmek için zorlamanın bir yolu var mı?

cevap

1

beforeSend olayında HTTP XHR isteğine başlık ekleyebilirsiniz. gibi

şey:

$.ajax({ 
    url: 'https://api.example.com', 
    data: { foo: 'bar' }, 
    beforeSend: function(xhr) { 
    xhr.setRequestHeader("Origin", "https://app.example.com"); 
} 
}) 
.success(getSuccess) 
.error(getError); 
+4

'Origin' kısıtlı başlığıdır ve JavaScript tarafından elle ayarlanamaz. – abraham

+0

Safari bu üstbilgiyi desteklemiyor, ancak manuel olarak eklemeyi kısıtlıyor mu? – Variant

+0

Tüm önemli tarayıcıların, Kökeni eklemeye kısıtladığını bildiğim kadarıyla. Safari, POST/DELETE istekleri için Origin'i (ve belki başkalarını) destekler. İdeal olarak, bazı "GET istekleri için true = true" seçeneği vardır. – abraham