为何抓到的包有2条重复的请求?(一条OPTIONS,一条GET/POST/其他)

抓包的时候,有时会看到浏览器发送了2次接口相同的请求,第一条是OPTIONS,不会返回任何数据,也就是response body 里面没有内容,调第二次相同的接口会有response body 里会显示实际请求的数据。

OPTIONS请求:

options请求的官方定义:OPTIONS方法是用于请求获得由Request-URI标识的资源在请求/响应的通信过程中可以使用的功能选项。通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。

用白话说就是:在发生正式的请求之前,先进行一次预检请求。看服务端返回一些信息,浏览器拿到之后,看后台是否允许进行访问。

为什么会用到OPTIONS请求?

1、产生了复杂的请求

  首先说下简单请求,复杂请求就是它的对立面。

(1 )get/post/head请求

(2 )content-type 为text/plain、multipart/form-data、application/x-www-form-urlencoded

 eg:   如果是使用application/json做数据交互的话,那么就是为复杂请求,需要先发个options

2、跨域

什么是跨域?

概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。

eg:  

URL是否跨域说明

http://www.a.com/a.js

http://www.a.com/b.js

同一域名下 允许

http://www.a.com/lab/a.js

http://www.a.com/script/b.js

同一域名下不同文件夹 允许

http://www.a.com:8000/a.js

http://www.a.com/b.js

同一域名,不同端口 不允许

http://www.a.com/a.js

https://www.a.com/b.js

同一域名,不同协议 不允许

像如果协议、端口不同,就需要通过后台去解决。像springboot 或ssm项目都有不同的解决办法

 

总结:只要是带自定义header的跨域请求,在发送真实请求前都会先发送OPTIONS请求,浏览器根据OPTIONS请求返回的结果来决定是否继续发送真实的请求进行跨域资源访问。所以复杂请求肯定会两次请求服务端。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值