http跨域时的options请求

  • 时间:2018-08-19 22:21 作者:Alvin_9d9c 来源:Alvin_9d9c 阅读:222
  • 扫一扫,手机访问
摘要:一、简介????出于安全考虑,并不是所有域名访问后台服务都可以。其实在正式跨域之前,浏览器会根据需要发起一次预检(也就是option请求),使用来让服务端返回允许的方法(如get、post),被跨域访问的Origin(来源或者者域),还有能否需要Credentials(认证信息)等。那么浏览器在什么情况

一、简介

????出于安全考虑,并不是所有域名访问后台服务都可以。其实在正式跨域之前,浏览器会根据需要发起一次预检(也就是option请求),使用来让服务端返回允许的方法(如get、post),被跨域访问的Origin(来源或者者域),还有能否需要Credentials(认证信息)等。那么浏览器在什么情况下能预检呢?

二、两种请求方式

????浏览器将CORS请求分为两类:简单请求(simple request)和非简单请求(not-simple-request),简单请求浏览器不会预检,而非简单请求会预检。这两种方式怎样区分?

同时满足下列三大条件,就属于简单请求,否则属于非简单请求

1.请求方式只能是:GET、POST、HEAD

2.HTTP请求头限制这几种字段:Accept、Accept-Language、Content-Language、Content-Type、Last-Event-ID

3.Content-type只能取:application/x-www-form-urlencoded、multipart/form-data、text/plain

对于简单请求,浏览器直接请求,会在请求头信息中,添加一个origin字段,来说明本次请求来自哪个源(协议+域名+端口)。服务器根据这个值,来决定能否同意该请求,服务器返回的响应会多几个头信息字段,如图所示:上面的头信息中,三个与CORS请求相关,都是以Access-Control-开头。

1.Access-Control-Allow-Origin:该字段是必需的,* 表示接受任意域名的请求,还可以指定域名

2.Access-Control-Allow-Credentials:该字段可选,是个布尔值,表示能否可以携带cookie,(注意:假如Access-Control-Allow-Origin字段设置*,此字段设为true无效)

3.Access-Control-Allow-Headers:该字段可选,里面可以获取Cache-Control、Content-Type、Expires等,假如想要拿到其余字段,即可以在这个字段中指定。比方图中指定的GUAZISSO

非简单请求是对那种对服务器有特殊要求的请求,比方请求方式是PUT或者者DELETE,或者者Content-Type字段类型是application/json。都会在正式通信之前,添加一次HTTP请求,称之为预检。浏览器会先讯问服务器,当前网页所在域名能否在服务器的许可名单之中,服务器允许之后,浏览器会发出正式的XMLHttpRequest请求,否则会报错。(备注:之前碰到预检请求后台没有通过,就不会发正式请求,而后找了好久起因,原来后台给忘了设置...)Java后台实现阻拦器,排除Options

JAVA代码片段

就Content-Type为application/json为例:比照两张图片,一次预检请求,一?次正式请求:

预检请求正式请求

很显著,请求头中预检请求不会携带cookie,正式请求会携带cookie和参数。跟普通请求一样,响应头也会添加同样字段。

一旦服务器通过了“预检”请求,以后每次浏览器正常的CORS请求,就都跟简单请求一样。

  • 全部评论(0)
最新发布的资讯信息
【系统环境|软件环境】如何成为一名大数据工程师?(2019-05-20 12:11)
【系统环境|Linux】大数据四大常识,不会你敢说自己在做大数据?(2019-05-19 11:39)
【系统环境|】需要同时掌握AVA和Linux,才可以继续大数据课程的学习(2019-05-18 10:28)
【系统环境|软件环境】学习大数据,一定要了解大数据的这些用途(2019-05-16 10:49)
【系统环境|Linux】bt宝塔控制面板mysql频繁自动停止详细解决办法(2019-05-16 08:52)
【系统环境|】大数据零基础学习路线,新人记得保存收藏哦(2019-05-15 10:54)
【系统环境|】全网最全最新的大数据系统学习路径(2019-05-14 15:38)
【系统环境|Linux】毕业设计:音乐分享系统(2019-05-14 07:48)
【系统环境|】教你零基础如何快速入门大数据技巧(2019-05-12 11:25)
【系统环境|】想学习大数据?这才是完整的大数据学习体系(2019-05-11 11:33)
手机二维码手机访问领取大礼包
返回顶部