ajax跨域问题总结&解决方案

【跨域产生的原因】:
1.浏览器限制
2.跨域
3.XHR(XMLHttpRequest)请求

【解决思路】
1.浏览器 不可行
2.XHR请求 JSONP(限制太多
3.跨域 A.被调用方(修改被调用方支持跨域 B.调用方(ngix做转发

【方案具体】:
1.===浏览器===
启动chrome.exe时候先在管理员的cmd调用参数
chrome --disable-web-security --user-data-dir=g:\temp3

2.===JSONP如何解决跨域===
设置ajax请求增加 dataType:"jsonp"
服务器后台增加代码
弊端:
A.服务器需要改动代码支持 
B.只支持get请求
C.发送的不是XHR请求 (异步、各种事件都没有)

3.===跨域解决方案===
3.1 被调用方解决 (修改被调用方http服务器
A.服务器实现 Filter方案
[简单请求] 先请求后判断origin
方法为:GET HEAD POST
请求header里面
    无自定义头
    Content-Type为以下几种:
        text/plian
        multipart/form-data
        application/x-www-form-urlencoded
[非简单请求] options预检名利 预请求后发送正真的请求
    put delete方法的ajax请求
    发送json格式的ajax请求
    带自定义头的ajax请求
Access-Control-Allow-Origin: * ??? 不能写* ,必须写具体域名(如果有cookie)有问题,发送的cookie是被调用方域名的cookie而不是调用方cookie
B.NGINX实现
    配置
C.APACH实现
D.spring解决方案 @CrossOrigin

3.2 调用方解决(修改调用方http服务器
A.反向代理-NGINX配置 隐藏跨域
B.反向代理-APACHE配置 隐藏跨域

 

ajax跨域完全降解
https://www.imooc.com/video/16581

你可能感兴趣的:(js,ajax,java,nginx)