2017-07-07 88 views
1

在我的web服務器上有一個文件夾(說的鏈接是:www.foo.com/json/)。添加Access-Control-Allow-Origin:*輕鬆地添加到JSON

在這個鏈接裏面,我有一個json文件,像foo.json。我想從其他網站訪問此文件。我試圖研究「CORS」,但它看起來相當複雜,我不在我的網站foo.com上使用任何後端。我聽說,你可以簡單地使用PHP,並把這個在:

<?php 
header("Access-Control-Allow-Origin: *"); 

如何將其添加到具有以.json文件夾,這樣,當我做的:

$.getJSON("http://foo.com/json/foo.json", function(json) { 
    console.log(json 
)}); 

它贏得了」 t拋出錯誤。我希望這很容易讓任何網站做到這一點,我只是不知道如何連接它。

+1

如果'foo.json'只是一個實際的文本文件,你就需要設置實際的服務器軟件來應用該標題。像PHP這樣的服務器端語言只涉及到,如果你的目標是生成/返回數據的腳本 –

+0

也許這可以在服務器配置文件中完成,當文件名以'.json'結尾時添加頭。 – Barmar

回答

1

選項1:使用PHP

你不能將它添加到上傳.json文件。你需要創建一個返回JSON數據的php文件。粗例子可能是:

/json/index.php?f=foo

header("Access-Control-Allow-Origin: *"); 
header("content-type: application/json"); 
echo file_get_contents($_REQUEST['f'].".json"); 

這將允許您設置訪問控制允許來源標題和返回所需的JSON文件內容您的遠程調用:

$.getJSON("http://foo.com/json/index.php?f=foo", function(json) { 
    console.log(json); 
}); 

選項2:使用服務器配置

另一種選擇是,配置頭一個pply到您的服務器配置中的json文件。使用的Apache2你可以添加以下到您的服務器配置或在/ JSON目錄.htaccess文件包括:

<Files "*.json"> 
    Header set Access-Control-Allow-Origin "*" 
</Files> 

這將自動包含所有的JSON文件的標題。

+0

太棒了,它效果很棒!感謝我發現的最乾淨的解釋:) 因爲我沒有聲望,所以無法贊成。 –

+0

問題:因爲我允許Access-Control-Allow-Origin,理論上可以有人發佈到json嗎?或者這是隻讀的? –

+0

如果您的意思是詢問JSON文件是否可以修改,那麼我認爲只有在添加代碼來處理輸入數據並寫入index.php中的文件時,纔可以使用php方法。Access-control-allow-origin頭只用於允許遠程使用資源,可以使用這些資源完成的任務與在本地訪問它們沒有區別,並且基於服務器配置和服務來促進這些操作。 – M31

0

請勿直接訪問JSON文件,請在中間使用PHP頁面。所以你打電話給www.foo.com/json/,它將運行該文件夾中的默認PHP文件(比如index.php)。現在這個PHP頁面將像你提到的 頭文件(「content-type:application/json」)設置CORS頭文件。

header("Access-Control-Allow-Origin: *"); 

然後讀取JSON文件,並將其添加到與正確的MIME類型一起響應:

header("content-type: application/json"); 
相關問題