2011-06-20 28 views
6

https://app.example.com我做以下請求:力Safari瀏覽器,包括jQuery的Origin標GET請求

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

它工作正常,在Chrome和Firefox,但不是在Safari瀏覽器。 Safari不會執行預檢OPTIONS請求或包含Origin: https://app.example.com標頭,因此服務器不會返回Access-Control-Allow-Origin: https://app.example.com標頭。

有什麼方法可以強制Safari包含Origin標頭或執行預檢選項請求?

回答

1

您可以將標頭添加到beforeSend事件中的HTTP XHR請求中。

是這樣的:

$.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'是受限頭和不能由JavaScript手動設置。 – abraham

+0

Safari不支持此標題,但限制手動添加它? – Variant

+0

據我所知,所有主流瀏覽器都限制添加Origin。 Safari支持POST/DELETE請求的Origin(也許還有其他)。理想情況下,有一些「爲GET請求啓用Origin = true」選項。 – abraham

相關問題