美文网首页
Ajax跨域完全理解

Ajax跨域完全理解

作者: 浪漫宇宙与人间日常 | 来源:发表于2018-11-14 16:55 被阅读0次

1. AJAX跨域完全问题的原因

  • 浏览器出于安全考虑,特定限制

  • 请求是跨域的

  • 请求方式是XHR请求

2. 解决思路

  • 让浏览器不做限制,后台不需要改动后台

  • 请求类型不为xhr(jsonp)

jsonp 需要后台进行改动
返回的类型为JavaScript类型
jsonp是动态创建script脚本 并且立即销毁

jsonp的弊端:1. 改服务器代码;2. 只能是get请求;3. 发送的不是xhr请求

  • 服务器端解决

3. 解决方法(服务端解决)

服务器过滤器实现

  1. 通过filter给请求头加上跨域地址
"Access-Control-Allow-Origin":"*"
//*表示允许所有,也可指定特定的域名地址
"Access-Control-Allow-Methods":"*"
// 有时候也会需要设置这个,如果请求头设置了自定义头类型  
"Access-Control-Allow-Header":"Content-Type"

// 可以通过下面设置预警命令缓存
"Access-Control-Max-Age":"3600"
  1. 带cookie的跨域请求
    设置"Access-Control-Allow-Origin":"*"不行,必须为全匹配
    然后还需要加上"Access-Control-Allow-Credentials":"true"

如果设置为特定匹配的话 ,还可以从请求头中取出origin,再通过filter设置到响应头里面去

nginx实现

在虚拟主机对应的conf配置文件下修改(意思参照nginx)

server{
    listen 80;
    server_name b.com;
    location / {
        proxy_pass http://lcoalhost:8080/;
        add_header Access-Control-Allow-Methods *;
        add_header Access-Control-Max-Age3600;
        add_header Access-Control-Allow-Credentials true*;

        add_header Access-Control-Allow-Methods  $http_origin  ;
        add_header Access-Control-Allow-Methods  $http_access_control_request_headers;
        
        if($request_method = OPTIONs){
            return 200;
        }
    }
}

Apache实现

在虚拟主机对应的conf配置文件下修改

虚拟主机部分配置 请求头部分配置

Spring框架实现

通过给action加上@CrossOrigin注解

隐藏跨域

处理调用地址 通过反向代理

server{
    listen 80;
    server_name a.com;
    location / {
        proxy_pass http://lcoalhost:8080/;
    }
    location /ajaxserver {
        proxy_pass http://lcoalhost:8081/test;
    }
}

请求 a.com/ajaxserver 就会转发 到lcoalhost:8081/test;跨域也解决了。

关注我

相关文章

  • Ajax跨域完全理解

    1. AJAX跨域完全问题的原因 浏览器出于安全考虑,特定限制 请求是跨域的 请求方式是XHR请求 2. 解决思路...

  • AJAX跨域完全讲解

    AJAX跨域完全讲解 今天在慕课网上学习了AJAX跨域完全讲解:https://www.imooc.com/lea...

  • Http浅析【2】——ajax跨域问题

    视频参考:ajax跨域完全讲解 本文精华版:【综合】ajax跨域问题 什么是跨域问题 简单来讲,当前台调用后台,如...

  • 解决ajax跨域问题

    Jsonp解决ajax跨域问题 CORS解决ajax跨域问题

  • 如何解决跨域问题?

    理解跨域的概念:协议、域名、端口都相同才同域,否则都是跨域 出于安全考虑,服务器不允许ajax跨域获取数据,但是可...

  • 理解ajax跨域

    跨域产生的原因 ionic项目什么情况下会产生ajax跨域问题 针对ionic项目开渔问题我们怎么去避免 跨域产生...

  • 前端跨域

    什么是ajax跨域 ajax跨域的原理 ajax出现请求跨域错误问题,主要原因就是因为浏览器的“同源策略”,可以参...

  • ajax跨域完全讲解

    产生跨域原因 浏览器限制 跨域(协议、主机名、端口号等不同就属于跨域) XHR(XMLHttpRequest)请求...

  • 2020-04-03

    1.如何解决跨域问题?理解跨域的概念:协议、域名、端口都相同才同域,否则都是跨域出于安全考虑,服务器不允许ajax...

  • 跨域

    跨域:ajax 不能跨域img css script 标签 可以跨域例如:《img src="images/...

网友评论

      本文标题:Ajax跨域完全理解

      本文链接:https://www.haomeiwen.com/subject/axrjfqtx.html