2016-06-10 55 views
1

插件鉻我使用jQuery,使跨起源Ajax請求,我想在像this--請求設置頭,但它說,它是一個不正確的請求:CORS在阿賈克斯

$.ajax({ 
     url: address, 
     headers:{ 
      'Access-Control-Allow-Origin': '*' 
     } 
     success: function(result) { 
      pipelineCallback(result, guid_key, j, missing_program); 
     }, 
     error: function(result) { 
      console.log(result); 
     }, 
     async: true 
    }); 

警告:當我沒有設置標題並使用這個CORS chrome插件時,跨域請求可以正常運行......這個問題有什麼問題?

插件鏈接(那裏有一個公共GitHub庫太): https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en

+0

如果有效,爲什麼要添加標頭呢? –

+0

您需要將服務器設置爲使用標題。 –

+0

服務器確實使用標題 - 我說我不想使用插件在請求上設置標題。我想根據請求手動設置標題。 – KonradS

回答

4

Access-Control-Allow-Origin響應頭,而不是一個請求報頭。

CORS瀏覽器插件假貨將其添加到響應中。

添加非標頭的要求觸發a preflight OPTIONS request這需要一個特定的一種迴應,告訴它是確定以使與非標頭的請求的瀏覽器。

Allow-Control-Allow-Origin: *添加到響應(這是瀏覽器插件的作用)不足以授予該權限。 (預先發送的請求在響應中需要明確的允許來源,而不是通配符)。

+0

所以我可以假裝沒有在jQuery中使用插件? – KonradS

+0

@KonradS - 不會。這會使整個安全功能變得毫無意義。其他服務器必須爲您的站點授予使用瀏覽器憑據從中讀取數據的權限。你不能允許自己的權限(雖然瀏覽器的所有者可以像你在插件中發現的一樣,通過*瀏覽器*來禁用該檢查)。 – Quentin