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请求。

你可能感兴趣的:(AJAX跨域)