为了账号安全,请及时绑定邮箱和手机立即绑定

ajax跨域完全讲解

晓风轻 全栈工程师
难度中级
时长 1小时40分
学习人数
综合评分9.67
119人评价 查看评价
9.7 内容实用
9.6 简洁易懂
9.7 逻辑清晰
  • Nginx  设置跨域请求头的配置

    查看全部
  • 服务器支持跨域  与  前台调用隐藏跨域  架构图

    查看全部
  • 最好的解决方案是修改http服务器 支持跨域
    查看全部
  • controller 切面???
    查看全部
    0 采集 收起 来源:json解决跨域1

    2018-05-08

  • xhr和json请求的区别
    查看全部
  • 产生跨域的原因

        1,浏览器限制

        2.跨域请求

        3.XHL请求

    查看全部
  • 简单请求与非简单请求

    查看全部
  • mark
    查看全部
  • 被调用方解决方案-发送到nginx的http服务器

    查看全部
  • 一、解决跨域的思路:

    1.被调用方解决-支持跨域(根据http协议关于跨域方面的要求,增加响应头信息,告诉浏览器允许被跨域调用)

    (1)使用filter解决

    res.addHeader("Access-Control-Allow-Origin", "http://localhost:8081"); //设置允许http://localhost:8081域访问,*表示所有域都能访问

    res.addHeader("Access-Control-Allow-Methods", "GET");//设置允许GET方法访问,*表示所有方法

    (2)nginx解决方案

    (3)APACHE解决方案

    (4)Spring解决方案 加@CrossOrigin注解即可

    2.调用方使用代理做调用解决跨域问题-隐藏跨域

    (1)使用反向代理

    反向代理:访问同一个域名的两个url,会去到两个不同的服务器


    二、简单请求和非简单请求

    • 简单请求:先执行后判断

    工作中常见的简单请求:

    方法为:GET,HEAD,POST

    请求header里面:无自定义头

    Content-Type为以下几种:text/plain,multipart/form-data,application/x-www-form-urlencoded

    • 非简单请求:先发预options预检命令,通过后再发跨域请求

    res.addHeader("Access-Control-Allow-Headers", "Content-Type");//允许预检命令

    res.addHeader("Access-Control-Max-Age", "3600");//预检命令缓存秒数

    工作中常见的非简单请求:put,delete的请求,发送json格式的请求,带自定义头的请求


    三、带Cookie的跨域请求,response中需要设置

    res.addHeader("Access-Control-Allow-Credentials", "true");

    res.addHeader("Access-Control-Allow-Origin", "http://localhost:8081");//带Cookie时Access-Control-Allow-Origin需要全匹配,不能用通配符

    当多个域名都需要带Cookie跨域访问时,从Filter里面拿到Origin信息,把这个字段写入到Access-Control-Allow-Origin里面

    String origin = req.getHeader("Origin");

    if(!StringUtils.isEmpty(origin)) {

    res.addHeader("Access-Control-Allow-Origin", origin);

    }

    注意:1. 发送的Cookie是被调用方的Cookie,不是调用方的Cookie document.cookie="cookie1=xiaofengqing"这样就能新加入一个cookie了  2.Access-Control-Allow-Origin不能使用*


    四、带自定义头的跨域

    //支持所有自定义头

    String headers = req.getHeader("Access-Control-Request-Headers");

    if(!StringUtils.isEmpty(headers)) {

    res.addHeader("Access-Control-Allow-Headers",headers);

    }


    查看全部
    6 采集 收起 来源:课程总结

    2018-05-03

  • Nginx配置CORS支持跨域(被调用方)

    https://img1.sycdn.imooc.com//5ae9b22f0001a7b609470644.jpg

    查看全部
  • jsonp实现原理:

    前后台都需要做修改

    (1) jquery动态创建一个script,使用script发送出去,不是xhr请求。

    (2) 后台与前台约定使用相同的如callback函数,服务器返回的就会是javascript脚本,不是json。

    jsonp除了callback还有一个_的函数,是防止缓存的。如果cache设置为true,就没有_函数了

    查看全部
    1 采集 收起 来源:json解决跨域

    2018-05-03

  • 产生跨域的三个条件:1.浏览器限制;2.跨域;3.请求类型是xhr(xmlhttprequerst)

    查看全部
  • 复杂请求

    查看全部
  • 跨域笔记
    查看全部

举报

0/150
提交
取消
课程须知
需要具备基本的前后台开发技术
老师告诉你能学到什么?
AJAX跨域产生的原因和解决思路 系统的基本部署架构和跨域的关系 http服务器nginx和apache的重要作用和跨域的2种解决思路 jsonp的工作机制和优缺点 前台测试框架Jasmine的使用

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!