2013-08-01 109 views
4

我在從應用程序中的URL收集Json值時遇到了麻煩。當我嘗試獲取它們時,控制檯中顯示錯誤日誌,說明訪問控制允許來源不允許原點。使用javascript設置響應標頭

我研究了一下,發現,響應頭必須設置訪問控制允許來源:*

我如何能做到用純JavaScript?沒有jquery或任何其他庫。

這是我當前的代碼:

<script type="text/javascript"> 
    var xmlHttp = null; 
    xmlHttp = new XMLHttpRequest(); 
    xmlHttp.open("GET", "http://example.com/id=69", false); 
    xmlHttp.send(null); 
    console.log("JSON values from URL: "); 
    console.log(xmlHttp.responseText); 
</script> 

回答

5

我研究了一下,發現,響應頭必須設置訪問控制允許來源:*

我如何能做到用純JavaScript?沒有jquery或任何其他庫。

你不能,不能,除非你服務器運行的JavaScript(的NodeJS等)。

服務器必須允許從文檔的來源訪問資源。它的工作方式是:

  • 瀏覽器請求的權限訪問該資源(這就是所謂的「預檢」的要求),告訴什麼資源,它希望訪問服務器等

  • 的服務器回覆相應的標題,告訴瀏覽器是否允許訪問。

  • 瀏覽器發送實際請求。

  • 服務器響應它(再次包括相關的標題)。

我相信有些情況下飛行前是沒有必要的。所有這些都是由XMLHttpRequest對象爲您處理的。

詳情在the Cross-Origin Resource Sharing specification

+0

我的服務器正在運行NodeJS。我可以設置響應標題嗎? –

+0

@MarkoĆilimković:當然,在服務器上使用['response.setHeader'](http://nodejs.org/api/http.html#http_response_setheader_name_value)的代碼。 CORS非常挑剔,你需要確保你允許客戶端要求的一切,這意味着檢查瀏覽器發送的請求頭。 –

+0

謝謝你的解釋! –

2

你不能做到這一點在客戶端,服務器必須發送這些報頭。

相關問題