2014-01-27 41 views
0

首先,我不是在我們的世界的網絡方面,所以與後端人很好。Azure和CORS訪問控制允許來源與AJAX和PHP

快速背景:爲了個人需要,我開發了Google Chrome擴展。他們基本上是一個網頁加載在鉻窗口和...是的就是這樣。一切都在客戶端(腳本,樣式,圖像等)。只有數據通過ajax調用來自服務器。一個cron作業每小時調用一次php腳本來生成兩個文件。其一,data.json包含json格式的「最新」數據。另一個hash.json包含數據的散列。客戶端chrome應用程序使用本地存儲。如果遠程哈希與本地哈希不同,他只需從遠程服務器檢索數據文件即可。

因爲我在Azure有BizSpark帳戶,所以我的第一個想法是:Azure網站使用PHP作爲腳本,簡單的主頁以及生成的文件和作業的Azure計劃程序。

我已經開發了當地的一切,一切都運行良好...但一旦上了天藍色。平臺我得到這個錯誤

XMLHttpRequest cannot load http://tso-mc-ws.azurewebsites.net/Core/hash.json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:23415' is therefore not allowed access. 

但我實在無法理解的是,我能夠(你也可以)用我的瀏覽器獲取文件...所以我只是不明白它......我也試着基於我在SO和其他網站上找到的一些帖子來操縱配置,添加額外的標題,似乎沒有任何工作...

任何想法?

回答

0

好吧,將perhap的小巨魔的答案,但不是我的觀點(我是.net顧問所以......沒有反對MS)。

我選擇一個Linux Azure虛擬機,安裝apache和php,配置apache,設置一些權限併爲CROS定義標題並在+/- 30分鐘內配置一個cron ...因爲我的目標是讓它運行問題解決了,它正在運行。

2

但我實在無法理解的是,我能夠(而且你會 太)讓我的瀏覽器中的文件......所以,我只是不明白這一點

因此,當您在瀏覽器的地址欄中輸入http://tso-mc-ws.azurewebsites.net/Core/hash.json時,它不是跨域請求。但是,當您從運行在不同域中的應用程序發出的AJAX請求(您的案例中爲http://localhost:23415)時,這是跨域請求,並且由於您的網站上未啓用CORS,因此會出現錯誤。

就啓用CORS而言,請看看這個主題:HTTP OPTIONS request on Azure Websites fails due to CORS。我從來沒有與PHP/Azure網站合作過,所以我可能在這個鏈接上出錯,但希望它能指向正確的方向。

+0

感謝Gaurav Mantri,我已經閱讀過這篇文章,沒有任何改變。我找到了一種使其工作的方法,看看答案。謝謝你的幫助 ! –

相關問題