HTTP之访问控制「CORS」

栏目: 后端 · 前端 · 发布时间: 5年前

内容简介:跨域资源共享「CORS」就是在不同的域名、协议、端口直接请求资源。本文主要讲述了什么是跨域,什么情况下会出现预检请求,我司的跨域安全访问出于安全的原因,在没有被允许的情况下浏览器限制从不同源「origin」发起请求,也可能是跨站请求可以正常发起,但是返回结果被浏览器拦截了。源:由协议+域名+端口组成,也就是说,这个三个要统一才同源

跨域资源共享「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」,然后返回一些信息。 如下图:

HTTP之访问控制「CORS」
HTTP之访问控制「CORS」

这里有两个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,这时候就触发预检请求

HTTP之访问控制「CORS」

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Windows黑客编程技术详解

Windows黑客编程技术详解

甘迪文 / 人民邮电出版社 / 2018-12 / 108

《Windows黑客编程技术详解》介绍的是黑客编程的基础技术,涉及用户层下的Windows编程和内核层下的Rootkit编程。本书分为用户篇和内核篇两部分,用户篇包括11章,配套49个示例程序源码;内核篇包括7章,配套28个示例程序源码。本书介绍的每个技术都有详细的实现原理,以及对应的示例代码(配套代码均支持32位和64位Windows 7、Windows 8.1及Windows 10系统),旨在......一起来看看 《Windows黑客编程技术详解》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具