AJAX跨域

原因:

  • 浏览器限制
  • 跨域(协议、域名、端口)
  • XMR(XMLHttpRequest请求)

解决方法:

  • 浏览器:命令行参数启动,带上参数--disable-web-security

  • XHR:使用JSONP,后台服务器需要改动。请求类型(type)为script,返回类型为javascript。原理为动态创建script标签,在script中发送请求。JSONP弊端:服务器需要改动代码支持,只支持GET方法,发送的不是XHR请求(没有相关事件)。

  • 跨域:被调用方支持跨域:增加Access-Control-Allow-Origin的header(CORS,带Cookie时必须是全匹配,不能是*),调用方隐藏跨域:使用代理服务器转发请求。

浏览器如何判断请求是跨域

简单请求(先执行,后判断):方法为GET、HEAD、POST,请求header里面无自定义头,Content-Type为以下几种:text/plain、multipart/form-data、application/x-www-form-urlencoded。

非简单请求(先发送预检命令,通过后再发送请求):put,delete方法的ajax请求,发送json格式的ajax请求,带自定义头的ajax请求。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容