当前位置:  开发笔记 > 编程语言 > 正文

当url来自不同的服务器时,jQuery.ajax失败

如何解决《当url来自不同的服务器时,jQuery.ajax失败》经验,为你挑选了2个好方法。

如果您使用带有不同服务器的URL,为什么jQuery.ajax()会抛出错误而没有错误消息?



1> tvanfosson..:

这是因为对XMLHttpRequests的浏览器中实现的跨域请求的限制.您可以使用JSONP作为格式来解决这个问题,否则您将需要服务器端代理来处理请求.

引自http://jquery.com上的ajax文档

注意:当'script'或'jsonp'是dataType时,所有远程(不在同一域)请求都应指定为GET(因为它使用DOM脚本标记加载脚本).需要XMLHttpRequest对象的Ajax选项不适用于这些请求.完成时调用complete和success函数,但不接收XHR对象; 不调用beforeSend和dataFilter函数.



2> Andrey Volk..:

正如http://en.wikipedia.org/wiki/Cross-origin_resource_sharing所说:

跨源资源共享(CORS)是一种允许网页将XMLHttpRequests发送到另一个域的机制.1根据相同的原始安全策略,Web浏览器将禁止此类"跨域"请求.CORS定义了浏览器和服务器可以交互以确定是否允许跨源请求的方式.2它比仅允许同源请求更强大,但它比简单地允许所有这样的跨源请求更安全.

对于PHP,它使用header()函数完成:


CORS可以用作JSONP模式的现代替代品.虽然JSONP仅支持GET请求方法,但CORS还支持其他类型的HTTP请求.使用CORS使Web程序员能够使用常规的XMLHttpRequest,它支持比JSONP更好的错误处理.另一方面,JSONP适用于排除CORS支持的旧版浏览器.大多数现代Web浏览器都支持CORS.此外,虽然JSONP可能导致外部站点遭到入侵的XSS问题,但CORS允许网站手动解析响应以确保安全性.

JSONP或"带填充的JSON"是JavaScript中使用的通信技术.它提供了一种从不同域中的服务器请求数据的方法,这是由于相同的源策略而被典型Web浏览器禁止的.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有