在做开发的时候,很多新手都遇到,出现options请求的情况,这时候要怎么解决呢?
通过http方式我们最常用的就是:GET,POST;
GET:发送一个请求来取得主机上的某一资源。POST:向主机提交数据。
他们都可以作为前端和后台的数据交换使用;那么options在什么情况下会出现呢?
1.跨域调用,例如:调试时候很多情况都在跨越方式下调试;
2.自定义头部;
3.请求头的content-type参数:application/x-www-form-urlencoded,multipart/form-data,text/plain之外的格式。
options通常是浏览器自动发起的,目的就是去主机检查一下接下来要到用的方法(GET、POST、PUT、detele)在主机上是否支持;以上三种情况出现就会出现options请求了,其实是为了主机安全,例如:同源策略引发这个规则;
对于主机该如何处理呢?通过以下这两种检查来解决。
1.检查来源是否允许 -> 自定义的头部是否包含(这个和你项目有关)
如果你项目认为安全的,直接返回200状态码,就可以。
2.检查来源是否允许 -> 自定义的头部是否包含(这个和你项目有关)->检查content-type 的内容是否是你期望的
如果你项目认为是安全的,直接返回200状态码,就可以;如果不允许你可以放回状态码400或者其他;
那对于options请求影响服务性能,要如何来进行优化呢?
本来一个请求就搞定,结果频繁多了很多options必然造成服务的压力;
可以做到options请求做缓存处理,例如: http:// /api/getUser 接口会出现 options请求,我们在options返回是做一次options缓存,告知前端以后在此请求这个接口就不要在发options了,主机响应时可设置 Access-Control-Max-Age 的时间,默认10分钟;
希望以上就是发生options请求的原因及解决方法,希望对你有所帮助。