2013-05-22 145 views
0

我正在開發Web服務的前端(html-jquery)和後端(php)。我正在使用XAMPP(Apache)在本地主機上開發。我在eclipse中將我的前端和後端保存在不同的項目中,只是爲了讓一切更清晰。相同來源政策錯誤,jQuery

但是,我需要從jQuery到PHP服務器進行ajax調用(Http Post請求)。我總是得到錯誤:XMLHttpRequest cannot load http://193.164.4.112/Server_CityInfo/whereSubscribed.php. Origin http://localhost is not allowed by Access-Control-Allow-Origin.

我看着錯誤,我發現它與Same Origin Policy有關。

我也讀過,解決這個錯誤的可能的解決方案是使用CORS,JSONP或代理。但是,從錯誤的定義我明白,通過簡單地保持文件在同一目錄將解決問題的權利?所以我所做的是將所有前端文件移動到我的後端目錄,並嘗試再次運行html頁面以發出請求。

轟!我再次得到相同的錯誤..我在這裏做錯了什麼?如果它們現在在同一個目錄中,它應該工作嗎?

+0

你是什麼意思*「將所有的前端文件移動到我的後端目錄」*? – Joseph

+0

移動我的PHP文件與我的PHP文件,以便他們都在同一目錄中..在我可以得到我的HTML:192.168.2.1/clientSide/example.html和我的PHP:192.168.2.1/serverSide/example.php。現在我刪除了clientSide目錄並將所有文件移動到serverSide目錄。一切都很好現在.. –

回答

1

只需保持文件在同一目錄下就可以解決問題的正確

號,他們必須在同一個原點(協議,主機名,端口)。

您有:

http 193.164.4.112 80 (default for HTTP) 
http localhost  80 (default for HTTP) 

193.164.4.112不是localhost所以你打同源策略。

193.164.4.112localhost可能會解析到同一臺機器,由同一個網絡服務器處理,並被提供相同的文件,但瀏覽器不知道。網址必須匹配。

+0

+1。糾正我,如果我錯了,而不是使用絕對的網址,相對網址也將解決問題 – Nikhil

+1

是的,這應該工作(只要在答案的最後一段的「可能」是實際發生的) – Quentin

+0

好吧我解決了這樣的問題:我在我的瀏覽器localhost/pathToHTML中輸入。而不是我實際上鍵入IP/pathToHTML和工作!所以最後我可以通過將文件保存在同一個目錄中解決這個問題嗎?我只有這個問題,因爲我本地嘗試,並有本地主機與IP錯誤。但我的用戶將在其他電腦,不會有任何問題的權利? –