2009-07-29 68 views

回答

11

其因爲在瀏覽器中實現XMLHttpRequest的跨域請求的限制。您可以通過使用JSONP作爲格式來解決這個問題,否則您需要服務器端代理來處理請求。

ajax documentationhttp://jquery.com

注引用:所有的遠程(不在同 域)的請求應指定 爲GET時,「腳本」或「JSONP」是 的數據類型(因爲它使用DOM腳本標記加載腳本 )。需要XMLHttpRequest對象 的Ajax選項 不適用於這些請求。 完成調用完成併成功的函數爲 ,但不要求 接收XHR對象;調用前發送的 和dataFilter函數不是 。

0

因爲如果同源策略jQuery將不允許這樣做。最好的選擇將使用一些代理服務器頁面來獲取所需的頁面。

6

由於http://en.wikipedia.org/wiki/Cross-origin_resource_sharing說:

跨源資源共享(CORS)是一種機制,允許網頁製作的XMLHttpRequest到另一個域。 1根據相同的原產地安全策略,這種「跨域」請求否則會被網頁瀏覽器禁止。 CORS定義了瀏覽器和服務器可以交互的方式,以確定是否允許跨源請求。 2它比只允許同源請求更強大,但它比簡單地允許所有這樣的跨源請求更安全。

對於PHP它使用header()函數完成:

<?php 
header("Access-Control-Allow-Origin: http://example.com"); 
?> 

CORS可以用作現代替代JSONP圖案。雖然 JSONP僅支持GET請求方法,CORS也支持其他 類型的HTTP請求。使用CORS使Web程序員可以使用常規的XMLHttpRequest,它支持比JSONP更好的錯誤處理。另一方面,JSONP在傳統瀏覽器上工作,其中 排除了CORS支持。CORS由大多數現代Web瀏覽器支持。 此外,雖然JSONP可能會導致外部網站被盜用的XSS問題,但CORS允許網站手動解析對 的響應,以確保安全。

JSONP或「帶填充的JSON」是在JavaScript中使用的一種通信技術,用於 JavaScript。它提供了一種方法來請求來自不同域中的服務器的數據,這是典型Web瀏覽器所禁止的,因爲相同來源策略的 。

相關問題