我試圖在我的瀏覽器和使用CORS的Apache服務器(位於不同域中)之間工作。CORS不適用於Chrome/Firefox和Apache
在服務器端,我做了在服務器按響應的httpd.conf中部分有以下改變的「Header set Access-Control-Allow-Origin in .htaccess doesn't work」:
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
我的AJAX調用的形式爲:
$.ajax({
url :'https://x.x.x.x/validateCustomerID',
type : 'POST',
cache : false,
crossDomain: true,
contentType: 'application/json',
beforeSend: function(xhr){
xhr.setRequestHeader("Access-Control-Allow-Methods","POST");
xhr.setRequestHeader("Access-Control-Allow-Headers","X-Requested-With");
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
},
data : {loginId : '12345'},
success : function(response){console.log("Success"+JSON.stringify(response))},
error : function(response){console.log("Error"+JSON.stringify(response))}
});
}
我也嘗試以避免預檢要求註釋掉beforeSend(),但它要麼沒有成功。
我收到關於鉻和Firefox錯誤消息是:
- 在鉻:
「的XMLHttpRequest不能加載https://x.x.x.x/validateCustomerID否‘訪問控制允許來源’標頭是否存在。因此不允許Origin'null'訪問,響應的HTTP狀態碼爲403。
- 在Firefox:
「跨來源請求阻止:同源策略不允許讀取遠程資源在https://x.x.x.x/validateCustomerID。(原因:CORS請求失敗)」
在我的瀏覽器中沒有收到服務器的響應頭信息,我認爲這是CORS的強制性工作,並且在服務器上登錄並不顯示從我的瀏覽器發出的請求。
我真的很感激,如果有人在這裏可以幫我解決這個問題,因爲我在這裏呆了好幾天了,並且幾乎用了所有的命中和試用方法來使這件事情起作用。
你啓動Apache模塊頭'a2enmod headers' ? –
你爲什麼試圖在**請求**中設置訪問控制標題? – Quentin
@Jacob,我嘗試使用a2enmod頭部命令激活apache模塊頭,但它給了我一個錯誤,它是一個無效的命令。然後,我在某處讀取默認情況下在Apache中啓用了Mod_headers的地方,因此我將它保留原樣。這可能是一個問題嗎? –