2012-10-06 27 views
1

所以問題是我不斷收到這個錯誤。它非常間歇,看起來像一個Loch Ness Monster bug。由於在我的系統上從來沒有看到過,我只是有錯誤報告,我檢查了堆棧溢出。只有2個問題像我一樣存在但沒有答案。所以這裏是代碼。在同一個域上跨域jquery ajax錯誤

$(function() { 
    $.get("http://mysite.com/menu/popoutmenu1.php", {}, function(response) { 
     $("body").append(response); 
    }) 
}) 

當該代碼執行(顯然不是我正在使用的代碼的確切副本)我得到這個錯誤。

XMLHttpRequest cannot load http://www.mysite.com/menu/popoutmenu1.php. 
Origin http://mysite.com is not allowed by Access-Control-Allow-Origin. 

現在,這在我的計算機上完全正常,但在我的朋友計算機(它在某個網站上)出現相同的錯誤!我已經嘗試了幾臺電腦,它們都工作。我對此很困惑。

如果有人有任何建議,將是偉大的,謝謝。

回答

2

(唯一路徑,而無需主機名)使用相對或根相對URL:

$(function() { 
    $.get("/menu/popoutmenu1.php", {}, function(response) { 
     $("body").append(response); 
    }) 
}) 

自我強制SOP遵守,如果你不能那樣做,你就會有SOP的問題。

看起來像它可能是主機名轉發的問題。但無論哪種方式,這將解決它。

+0

有趣...我將不得不看看是否有效。它只是沒有任何意義,因爲它們都來自同一臺服務器。 – Michael

+0

相同的源策略不僅適用於相同的服務器,而且適用於相同的連接細節(例如端口)。在您提供的錯誤消息中,有一個是二級域名「mysite.com」,另一個域名是「www」主機名。轉發代理最有可能是重定向,而不是透明地處理不同的主機名,或者可能服務器配置爲使用與您使用的主機名不匹配的特定主機名。無論哪種方式,名稱在請求和響應之間改變,這足以打破SOP的限制。 –

+0

所以這就是我所做的(因爲我有幾臺服務器) 所有的ajax查詢都使用我的命名空間'myNamespace.getUrl()'。好的部分是我的'getUrl()'返回http://www.mysite.com/它現在只是使用相對根路徑(取決於服務器(測試/舞臺/產品有不同的)。非常感謝你!('getUrl()'由'php'sies設置。 – Michael