2013-08-26 86 views
-3

此代碼應該獲取http://yahoo.com/(index.html)的HTML源代碼,並在對話框中顯示它。爲什麼這不會獲取源代碼?

$.ajax({ url: 'http://yahoo.com', success: function(data) { 
    alert(data); 
    } 
}); 

但是,它不會做任何事情......

這有什麼錯我的代碼?

+3

同源策略是有幫助的!!!! –

+1

因爲你不能對外部域進行Ajax調用,除非他們**明確地允許它(谷歌CORS)。大多數「正常」網站(而不是web API)不會。 –

+0

嘗試查看您的瀏覽器的開發人員工具以查找錯誤。 – j08691

回答

3

默認情況下,您不允許進行跨域請求。這違反了Cross Origin政策。

要使其工作,請求的域必須發出允許請求域的標頭。

我有關於如何設置和使用CORS政策教程:http://fritsvancampen.wordpress.com/2013/02/03/cross-site-origin-requests-aka-cross-origin-resource-sharing/ ,但如果你想獲取來自雅虎,你需要控制自己的域名..而這不會發生的數據;)

+0

也是一個很好的資源(我想,我從來沒有實際上必須使用CORS):http://enable-cors.org/。 –

+0

該資源不包含細微差別。 'header(「Access-Control-Allow-Origin:*」);'只是懶惰和草率。 – Halcyon

+0

感謝您的建議傢伙!那麼,你們認爲最適合外部網站的HTML代碼?就像谷歌履帶。爲它設置CURL? – cat

相關問題