我想對GroupMe API進行API調用來獲取JSON響應,但一直得到以下錯誤:請求標頭字段X-CSRFToken不允許通過訪問控制允許頭部中的預檢響應
XMLHttpRequest cannot load ...(call url)...
Request header field X-CSRFToken is not allowed by Access-Control-Allow-Headers in preflight response.
我的JavaScript看起來像這樣:
var xmlhttp = new XMLHttpRequest();
var url = (call url)
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
xmlhttp.open("GET", url, true);
xmlhttp.setRequestHeader("Access-Control-Allow-Headers", "*");
xmlhttp.setRequestHeader('Access-Control-Allow-Origin', '*');
$.getJSON(url, function(data){
var array = data.response.messages.reverse();
for(i = 0; i<array.length; i++){
$('.messages').append("<div class='message'>"+array[i].name+":<br>"+array[i].text+"</div>");
}
});
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
我真的不明白請求頭是如何工作的,所以我猜我沒有正確設置標頭。有人能指出我正確的方向,我可以如何設置標題來解決這個問題嗎?
你不需要搞亂那些來自客戶端的頭文件,那些服務器響應頭文件。確保你的服務器在ACAH中的「X-CSRFToken」白名單,如果它是響應的一部分。 – dandavis
哦,我們JSers也沒有實際做出預檢,瀏覽器爲我們做了這個,讓我們的「常規屁股」Ajax工作,如果它通過... – dandavis