序言

跨域资源共享「CORS」就是在不同的域名、协议、端口直接请求资源。本文主要讲述了什么是跨域,什么情况下会出现预检请求,我司的跨域安全访问

什么是跨域

同源策略

出于安全的原因,在没有被允许的情况下浏览器限制从不同源「origin」发起请求,也可能是跨站请求可以正常发起,但是返回结果被浏览器拦截了。

什么才能是同源

源:由协议+域名+端口组成,也就是说,这个三个要统一才同源

例:

  • http://www.baidu.com && https://www.baidu.com 不同源 协议不同
  • http://api.baidu.com && http://www.baidu.com 不同源 域名不同
  • http://www.baidu.com:8081 && http://www.baidu.com:8080 不同源 端口不同
  • www.baidu.com/index.html && www.baidu.com/404.html 同源

什么情况下会出现预检请求

预检请求

跨域资源共享标准新增了一组HTTP首部字段,允许服务器声明哪些源站通过浏览器有权限访问哪些资源。在某些会对服务器数据产生作用「需要修改数据库」的请求「主要是GET以外的请求」,浏览器会先发送通过OPTIONS方法发送预检请求,从服务器那边得到返回是否允许跨域。服务器也可以携带是否需要身份凭证通知浏览器。

也就是说:在你发送请求的时候,浏览器会自己先发送一个预检请求。后台只需要识别请求的方法「OPTIONS」,然后返回一些信息。 如下图:

这里有两个login/请求,第一个是浏览器主动发出的。它的Request Method方法为 OPTIONS,然后服务器的返回信息:

  • access-control-allow-headers:允许你携带头的参数
  • access-control-allow-methods:允许你发送请求的方法
  • access-control-allow-origin:允许你发送请求的地址

这部分信息通知了你修改自己的请求参数来符合服务器的要求, 服务器如何除了浏览器发送的预检请求,可以参照这个MDN Server-Side_Access_Control (CORS)。

简单请求

在以下情况下发送的请求不会触发预检请求

  • 使用以下方法之一:「GET HEAD POST」

  • 头部字段在这个集合之内:「Accept, Accept-Language, Content-Language, Content-Type (需要注意额外的限制), DPR, Downlink, Save-Data, Viewport-Width, Width」

  • Content-Type以下三种之一:「text/plain,multipart/form-data,application/x-www-form-urlencoded」

  • ...

例子:我在发送登录的时候,头部字段自定义了Authorization,这时候就触发预检请求

我司的访问控制方式

JSON Web Token「JWT」

公司主要采用的就是JWT的跨域认证解决方案。JWT的意思就是:用户发送登录信息「用户名,密码」给服务器,服务器认证后生成一个JSON对象,给用户储存,之后用户请求数据都需要带上JWT来发送请求。

步骤

    1. 登录 发送用户名密码给服务器验证返回JWT
    1. 前端通过LocalStorage储存JWT
    1. 之后的请求带上JWT
    1. 验证过期或者失败直接返回401退到登录页面

不足之处

  • JWT一旦签发了,在到期之前始终有效,这样别人可以使用你的JWT获取数据
  • JWT过期或失效的时候,用户仍然需要通过失效的JWT请求才能知道JWT已经失效

扩展阅读

如果前端没有跟后端建立统一API设计规范,可以使用这个 RESTful api

参考

MDN HTTP访问控制 阮一峰 JWT入门教程

转载于:https://juejin.im/post/5ccd2222518825408612c23a

HTTP之访问控制「CORS」相关推荐

  1. 好奇了好久的「对象」,就这?

    作者 | 编程指北 来源 | 编程指北(ID:cs_dev) 别误会,今天要写的不是我对象,毕竟我还没有...... 这篇文章主要是聊聊我对于编程语言中「对象」的一些简单认识, 面向过程 VS 面向对 ...

  2. 编程人的「对象」长啥样?

    作者 | 编程指北  责编 | 张文 头图 | CSDN 下载自视觉中国 来源 | 编程指北(ID:cs_dev) 别误会,今天要写的不是我对象,毕竟我还没有...... 这篇文章主要是聊聊我对于编程 ...

  3. 「网络安全」安全设备篇(1)——防火墙

    什么是防火墙? 防火墙是指设置在不同网络(如可信任的企业内部网和不可信的公共网)或网络安全域之间的一系列部件的组合.它可以通过监测.限制.更改跨越防火墙的数据流,尽可能地对外部屏蔽网络内部的信息.结构 ...

  4. 「网络安全」安全设备篇(4)——防火墙、IDS、IPS的区别

    前面三篇文章,针对防火墙.IDS.IPS做了详细介绍,具体内容这里不再赘述,感兴趣的小伙伴可以去看看哦. 概念不同 防火墙和IPS属于访问控制类产品,而IDS属于审计类产品.我们可以用一个简单的比喻, ...

  5. 虹科干货|Redis企业版数据库为企业「数据安全」叠加最强Buff!

    虹科干货|Redis企业版数据库为企业「数据安全」叠加最强Buff! "这是一场可预见的噩梦!" 近期,黑客通过攻击亚洲最大两家数据中心-万国数据和新科电信媒体,获取国际巨头企业的 ...

  6. 一个「学渣」从零开始的Web前端自学之路

    从 13 年专科毕业开始,一路跌跌撞撞走了很多弯路,做过餐厅服务员,进过工厂干过流水线,做过客服,干过电话销售可以说经历相当的"丰富". 最后的机缘巧合下,走上了前端开发之路,作为 ...

  7. 一个「学渣」从零Web前端自学之路

    从 13 年专科毕业开始,一路跌跌撞撞走了很多弯路,做过餐厅服务员,进过工厂干过流水线,做过客服,干过电话销售可以说经历相当的"丰富". 最后的机缘巧合下,走上了前端开发之路,作为 ...

  8. 一个「学渣」的从零Web前端自学之路,附学习资源分享

    从 13 年专科毕业开始,一路跌跌撞撞走了很多弯路,做过餐厅服务员,进过工厂干过流水线,做过客服,干过电话销售可以说经历相当的"丰富". 最后的机缘巧合下,走上了前端开发之路,作为 ...

  9. 如何直观地理解「协方差矩阵」?

    如何直观地理解「协方差矩阵」? Xinyu Chen Urban Traffic Data Analytics 372 人赞同了该文章 协方差矩阵在统计学和机器学习中随处可见,一般而言,可视作方差和协 ...

最新文章

  1. oracle数据库的net manager配置监听(插图)
  2. css3动画应用-音乐唱片旋转播放特效
  3. faster-rcnn原理及相应概念解释
  4. 执行ssh-add时出现Could not open a connection to your authentication agent
  5. TensorFlow 2.0 - Checkpoint 保存变量、TensorBoard 训练可视化
  6. Delphi调用Android的.so文件(转)
  7. php增删改查参数化,JPA之使用JPQL语句进行增删改查
  8. 【数据结构和算法笔记】串详解:c实现
  9. c#后台如何导出excel到本地_C# 导出 Excel 的各种方法总结
  10. 魔兽登录后 服务器那显示不兼容,魔兽世界服务器不兼容什么意思?魔兽世界服务器不兼容解决方法...
  11. TC4056A丝印1A 线性锂离子电池充电IC
  12. 淘宝开店经验 心得 攻略
  13. 2022-2027年中国星级酒店市场竞争态势及行业投资前景预测报告
  14. 甘孜州2021高考 康定中学宴冬梅成绩查询,最新2021甘孜州高中排名
  15. JSON.stringify(value[, replacer [, space]])
  16. Rate This Topic
  17. 2018-07-03 根据Excel后缀名获取WorkBook
  18. 游戏下单陪玩app主要有哪些功能
  19. 一个 Git 库内管理多个子项目
  20. luogu2947向右看齐【栈】

热门文章

  1. 一个html文档所需要的最基本的标记对是,川大《WEB技术》19秋在线作业1题目【标准答案】...
  2. mysql oracle 默认事务级别_oracle 默认的事务隔离级别
  3. iOS限定UITextField的输入格式
  4. 首位植入脑机接口的患者通过Twitter发布信息
  5. BCI competition IV 2b简介
  6. eeglab中文教程系列(9)-绘制ERP图像
  7. 如何安全地吃掉悬崖边上的苹果?DeepMindOpenAI给出3D版安全强化学习答案
  8. 用数学方式打开Facebook新Logo,真的和视频号Logo来自同一方程
  9. 71岁的亿万富翁坐自家飞船成功游览太空!此前已为太空旅行砸了超10亿美元
  10. MIT一招霸气颠覆传统:勇敢换导师,成本我买单,学生沸腾了