2014-01-09 33 views
16

我正在關注一個書籍示例,因此代碼非常簡單。僅在Chrome中出錯:XMLHttpRequest無法加載文件URL請求的資源中沒有「Access-Control-Allow-Origin」標頭

這是代碼:

jQuery.get("ajax_search_results.php", 
      { s:search_query }, 
      write_results_to_page, "html"); 

而且代碼ajax_search_results.php有:

<div id="ajax_search_results"> 
<ul> 
<li><a href="#">First result</a></li> 
<li><a href="#">Second result</a></li> 
<li><a href="#">Third result</a></li> 
<li><a href="#">More...</a></li> 
</ul> 
</div> 

可正常工作的Firefox瀏覽器。 但在Chrome中,我可以看到在JS控制檯中的錯誤以下消息:

XMLHttpRequest cannot load 
file:///C:/xampp/xampp/htdocs/snk/ajax_search_results.php?s=keyword. 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'null' is therefore not allowed access. 

能否請你幫忙找出問題?

+3

通過Web服務器打開文件,例如'http:// localhost/someFile.html'。 Chrome默認情況下不允許針對'file:///'URL的AJAX請求,您的PHP腳本也不會執行 – Phil

+0

您是否將其作爲文件打開?打開它在服務器上,這意味着地址就像http:// .... – Andrew

回答

1

這應該是因爲你試圖製作跨域請求,或者是因爲它的緣故。 您可以嘗試將header('Access-Control-Allow-Origin: *');添加到請求的文件。

此外,在IE 8-10(第一次讓我困惑)中使用event-sourceXHR polling的情況下,服務器發送的事件實現有時會發生此類問題。

+0

感謝兄弟。你解決了我的問題。 –

+0

@AmirKaftari:很高興幫助! – Nevertheless

4

在文件的頂部添加此,

header('content-type: application/json; charset=utf-8'); 
header("access-control-allow-origin: *"); 
+3

簡單地去激活CORS並不是一個優雅的解決方案。不要這樣做。更好地瞭解CORS是什麼以及如何處理它:http://www.html5rocks.com/en/tutorials/cors/ –

5

如果你的問題是像下面在使用谷歌瀏覽器:

[XMLHttpRequest的無法加載文件。收到無效回覆。因此,原產地「空」是不允許訪問]

然後按照以下步驟創建一個批處理文件:在桌面

打開記事本

  1. 只需複製並粘貼以下在你當前打開的記事本文件:

啓動 「鉻」, 「C:\ Program Files文件(x86)的\谷歌\鍍鉻\應用\的chrome.exe」 - -ALLOW文件存取的檔案 出口

  1. 注:在前面的線,通過Chrome的安裝位置更換完整的絕對地址。 [爲了找到它......右擊的chrome.exe鏈接或圖標您捷徑和點擊屬性和複製 - 粘貼目標鏈接] [記住:開始文件一行.BAT]
  2. 如果要更改文件後來就再右擊:作爲fileName.bat [非常重要& 出口在另一條線路按enter]
  3. 保存文件。 bat文件並點擊編輯。修改後,保存文件。

這會做什麼?它將以文件訪問的方式打開Chrome.exe。 現在,您可以從計算機的任何位置使用Google Chrome瀏覽您的html文件。 我希望這將解決XMLHttpRequest問題。

請注意:只需使用快捷方式bat文件即可在需要時打開Chrome。 告訴我,如果它解決了你的問題。我遇到了類似的問題,我以這種方式解決了這個問題。謝謝。

+3

注意:由於安全原因,應該僅將**用於本地測試。 http://www.chrome-allow-file-access-from-file.com/ – AbcAeffchen

相關問題