Http协议:什么情况下发生了options请求?

网络 通信技术
新来的同事问我,我的项目中出现了很多options的请求,然后后台服务都挂了,我不知道如何处理。

背景:

新来的同事问我,我的项目中出现了很多options的请求,然后后台服务都挂了,我不知道如何处理;

[[343640]]

http协议

其实通过http方式我们最常用的就是:GET,POST; 他们都可以作为前端和后台的数据交换使用;

options在什么情况下出现

  • 跨域调用,例如:调试时候很多情况都在跨越方式下调试;
  • 自定义头部
  • 请求头的content-type参数:application/x-www-form-urlencoded,multipart/form-data,text/plain之外的格式

以上三种情况出现就会出现options请求了,说白就是为了服务器安全,例如:同源策略引发这个规则;

options通常是浏览器自动发起的,目的就是去服务器检查一下接下来要到用的方法(GET、POST、PUT、detele)在服务器上是否支持;

对于服务器该如何处理

检查以下内容

A:方式

  • 来源是否允许
  • 自定义的头部是否包含(这个和你项目有关)

如果你项目认为是安全的,直接返回200状态码,就可以;

B:方式

  • 来源是否允许
  • 自定义的头部是否包含(这个和你项目有关)
  • 检查content-type 的内容是否是你期望的

如果你项目认为是安全的,直接返回200状态码,就可以

如果不允许你可以放回状态码400或者其他;

options请求影响服务性能,如何优化

本来一个请求就搞定,结果频繁多了很多options必然造成服务的压力;

可以做到options请求做缓存处理,例如: http:// www.**.com/api/getUser 接口会出现 options请求,我们在options返回是做一次options缓存,告知前端以后在此请求这个接口就不要在发options了,服务器响应时可设置 Access-Control-Max-Age 的时间,默认10分钟;

进一步理解options

和options有关的关键字段作用

  • Access-Control-Request-Method:告知服务器,接下来请求将使用方法,例如POST
  • Access-Control-Request-Headers:告知服务器,接下来请求将携带的自定义请求首部字段

MDN 中对于OPTIONS的描述

HTTP 的 OPTIONS 方法 用于获取目的资源所支持的通信选项。客户端可以对特定的 URL 使用 OPTIONS 方法,也可以对整站(通过将 URL 设置为“*”)使用该方法。”

 

Http协议:什么情况下发生了options请求?

 

 

 

责任编辑:未丽燕 来源: 今日头条
相关推荐

2021-09-14 07:26:25

雪花算法ID

2023-11-23 23:52:06

options请求浏览器

2013-09-12 10:41:39

VDI部署

2021-04-23 23:19:26

加密货币稳定币比特币

2013-07-29 14:50:43

API

2015-06-01 06:39:18

JavaJava比C++

2020-11-18 09:26:52

@property装饰器代码

2012-04-25 09:24:40

Android

2013-09-23 10:05:50

2015-06-29 14:23:13

JavaC++慢很多

2010-07-13 16:07:26

SQL Server行

2023-05-18 08:38:13

Java锁机制

2014-11-03 09:52:25

DNSUDPTCP

2024-01-09 11:39:47

数字化转型数字优先企业

2009-03-05 10:55:00

企业无线Wi-Fi

2021-06-04 09:17:13

JavaScriptBoolean函数

2019-06-12 11:01:19

TCPUDPHTTP

2010-04-14 17:46:10

Oracle数据库

2020-08-17 12:47:07

Mozilla裁员浏览器

2019-11-12 14:41:41

Redis程序员Linux
点赞
收藏

51CTO技术栈公众号