我正在做一個CORS嘗試嘗試自動完成功能,就像從我的本地服務器到其他在線的測試一樣。此服務器具有在我嘗試訪問的文件夾中配置的基本身份驗證。所以我已經完成了ajax函數(我正在使用JQuery UI自動完成功能),並且我已經配置了php腳本來爲我返回一個JSON。一切從同一臺服務器工作正常。CORS嘗試,PHP不修改響應頭
這是我做了什麼:
$(function() {
$("#field").autocomplete({
minLength: 1,
source: function (request, response) {
console.log(request.term);
$.ajax({
type: 'POST',
url: url,
data: {
'idautor': 417,
'lat': 43.56,
'lon': -5.96,
'etiqueta': request.term
},
crossDomain: true,
dataType: 'json',
beforeSend: function (xhr) {
xhr.setRequestHeader ("Authorization", btoa(username + ":" + password));
},
success: function(data) {
response($.map(data["pines"], function(item) {
return {
value: item["nombre"],
label: item["nombre"],
idsitio: item["idsitio"],
autor: item["autor"]
}
}));
}
}).then(function(data) {
console.log('data', data);
},
function(err) {
console.log('err', err);
});
},
select: function (event, ui) {
alert("El sitio con id "+ui.item.idsitio+" y autor "+ui.item.autor+" ha sido pulsado.");
}
})
});
問題是,當我試圖從我的本地服務器,基本上我說的是我得到以下錯誤的跨域HTTP請求使用它在我的瀏覽器控制檯:
的XMLHttpRequest無法加載URL迴應預檢要求不 通過訪問控制檢查:沒有「訪問控制允許來源」標頭 出現在所請求的資源。原產地'http://localhost'是 ,因此不允許訪問。響應HTTP狀態代碼401
所以我研究了這個問題,我發現幾個promissing和簡單的解決方案,我的問題。我試着頭添加到PHP文件:
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Methods: GET,POST,OPTIONS");
header("Access-Control-Allow-Headers: accept, authorization, content-type");
也試過將它們添加到我的.htaccess
文件,但沒有成功可言。我仍然遇到同樣的錯誤。關於我錯過了什麼的任何線索?
爲了以防萬一以及進一步的信息,這是我發送請求時,我的XHR連接記錄,在那裏我看不到我已經手動添加在PHP中的新標頭。
我有一個類似的問題,我的PHP服務器,並通過添加從這個答案的代碼得到它的工作:http://stackoverflow.com/questions/18382740/cors-not-working-php/18399709#18399709試試吧出。 – noviewpoint
@noviewpoint我已經嘗試過,仍然是一樣的,不知道爲什麼,但有些東西否認我的標題修改或只是覆蓋它... – Asur