2016-02-29 73 views
0

我正在做一個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中的新標頭。

enter image description here 在此先感謝您。

+0

我有一個類似的問題,我的PHP服務器,並通過添加從這個答案的代碼得到它的工作:http://stackoverflow.com/questions/18382740/cors-not-working-php/18399709#18399709試試吧出。 – noviewpoint

+0

@noviewpoint我已經嘗試過,仍然是一樣的,不知道爲什麼,但有些東西否認我的標題修改或只是覆蓋它... – Asur

回答

0

如果您需要CORS憑據,則您的AJAX請求需要withCredentials設置爲true

設置Access-Control-Allow-Origin*Access-Control-Allow-Credentials組合時也不起作用。 You will have to specify the exact domain.

+0

我已將'xhrFields:{withCredentials:true}'添加到我的ajax函數和'http:// localhost'到我的'Access-Control-Allow-Origin'頭,我仍然得到完全相同的反饋?任何可能性都會覆蓋頭文件? – Asur

+0

我注意到本地開發和AJAX/CORS的任何問題,因此可以在在線環境中測試它並報告回來嗎? –

+0

我已經在沒有cors的情況下對它進行了測試,只是在同一臺服務器上,請求和json是完美的,它們工作正常,所以我很好奇,從中得出真正引起我注意的是XHR瀏覽器報告,無法看到添加的標題,正如您可以在帖子的圖片中看到的那樣。 – Asur