在我的代碼中,我從另一個域的另一個服務器獲取一些JSON與jQuery,並在瀏覽器中得到一個錯誤。配置括號服務器,以避免訪問控制,允許來源錯誤
XMLHttpRequest cannot load http://url_containing_json.com. Origin http://localhost:53651 is not allowed by Access-Control-Allow-Origin
配置支架服務器容易嗎?或者我需要建立自己的服務器才能做到這一點?
在我的代碼中,我從另一個域的另一個服務器獲取一些JSON與jQuery,並在瀏覽器中得到一個錯誤。配置括號服務器,以避免訪問控制,允許來源錯誤
XMLHttpRequest cannot load http://url_containing_json.com. Origin http://localhost:53651 is not allowed by Access-Control-Allow-Origin
配置支架服務器容易嗎?或者我需要建立自己的服務器才能做到這一點?
此限制來自網絡瀏覽器,而不是服務器。它被稱爲same-origin security policy(又名同域政策)。
什麼是http://url_containing_json.com
「JSON服務器」有問題?它是一個你有一定控制權的服務器嗎?如果是這樣,那麼你可以:
A)上傳你的代碼到「JSON服務器」本身,所以你的網站是從同一個域服務;或
B)上傳你的代碼,其他一些臨時服務器,並使用CORS的JSON服務器上基本上白名單臨時服務器的域名(JSON的服務器將提供一個Access-Control-Allow-Origin
HTTP標頭,如錯誤消息中提到)。
在另一方面 - 如果「JSON服務器」完全是第三方的,它實際上想其他網站像你要取它的JSON?如果是這樣,那麼它應該已經支持CORS(帶有一攬子允許所有策略)或JSONP(允許訪問的一種較老的方式,儘管您的請求需要設置稍微不同)。
如果JSON服務器不允許允許跨域請求,則您有最後一招:使用您自己的站點的服務器作爲代理。您的頁面不是直接ping JSON服務器,而是ping自己的服務器,然後代表頁面上的JSON服務器。
所有這些方法都需要運行您自己的服務器,而不是使用內置的「本地主機」服務器。您可以通過文件>項目設置...指向您自己的服務器,但請注意,這將禁用Live HTML Development等某些功能。 (儘管如果你能夠使用上面的選項「B」,你可能會破解你的hosts
文件,繼續使用內置的支架服務器,而不是通過改變其明顯的域名)。
希望有幫助!
碰到完全一樣的問題。我解決這個問題的方法是使用jsonp ajax請求類型,使用$ .ajax()調用的dataType參數。 查看JQuery documentation這個電話。
因此,在我發佈之前研究這個問題時,它似乎是通過服務器添加頭部的問題,如下面的鏈接,因此我認爲有一些方法可以通過Brackets中的內部服務器來實現,但我不知道如何訪問它或它的生活。對我使用括號的全部意義在於實時預覽功能,所以知道如何配置它的內部服務器會很高興http://stackoverflow.com/questions/5008944/how-to-add-an-access-control -allow-origin-header –
不幸的是,這是另一種方式 - 你需要添加一個頭到服務器_you're contacts_。這種情況下的「JSON服務器」。如果您不控制該服務器並且它不想讓您訪問(即,它不提供該標頭或基於JSONP的API),那麼您的選項非常有限。即使在生產中也是如此。 – peterflynn
您是否介意詢問您要聯繫的服務器? – peterflynn