2009-07-29 69 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浏览器所禁止的,因为相同来源策略的 。

相关问题