图12
提示设置Access-Control-Allow-Headers , 那我们就设置一下 。
文章插图
图13
再刷新页面 , 请求正常了 , 服务端也能拿到token的值了 。
简单请求与非简单请求图13中我们拿到了token的值 , 此时我们再去瞧瞧浏览器中的Network , 会发现页面发送了两个请求 , 第一个请求的method是OPTIONS , 这是怎么回事呢?
文章插图
图14
原来cors跨域也分简单请求和非简单请求 。
简单请求条件如下:
- 请求方法是必须是HEAD/GET/POST三种方法之一;
- HTTP的头信息不超出这几种字段:Accept/Accept-Language/Content-Language/Content-Language/Last-Event-ID/Content-Type , Content-Type只限于三个值Application/x-www-form-urlencoded、multipart/form-data、text/plain 。
我们现在尝试发送一次PUT请求 , 看看会有什么现象?
文章插图
图15
不出所料 , 浏览器再次报错!
文章插图
图16
提示我们设置Access-Control-Allow-Methods , 那就只能设置了!
文章插图
图17
再次刷新页面 , 现在请求正常了!我们回头看一下预检请求 ,
文章插图
图18
不得不说 , 浏览器在访问跨域接口时真的是非常的小心 , 当然这一切都是为了安全考虑 。即使这样 , 现在网络中也不乏XSS、CSRF等攻击 。
总结17年夏天作者去头条面试 , 当时笔试有这么一道题“如果浏览器请求跨域 , 那么这个请求还能到达服务器吗?如果能 , 服务器会返回什么?” 。如果你读完本文 , 并且能充分理解 , 我相信这道题肯定不在话下 。跨域在业务中经常遇到 , 大部分后端同学并不知道什么叫跨域 , 更不清楚该如何解决 。作为前端的你 , 这时候就可以大显身手了!
【解如何利用CORS跨域,是时候让前端来指挥一次后端同学开发了】
推荐阅读
- 什么是XSS攻击?如何防御XSS攻击?
- 解析音视频网络传输技术之一
- Linux中如何对硬盘进行分区、格式化、挂载使用
- Linux中如何添加SWAP
- 中小站长如何防范黑客攻击,避免网站遭受损失?
- nginx注册成windows服务的解决方法
- 发布文章时标题该如何编写
- 网站优化中如何布局长尾关键词
- ETC可以欠费多少天 如何去查etc是否欠费
- 如何在Go中编写第一个程序