常见的web请求中使用到的http请求方法:get、post、put、delete
发生的场景:
公司新项目实现前后端分离后,某天调试页面一个数据请求接口,一直报403的错误。用fiddler抓包分析,发现该接口竟然是Options请求(请求方法中使用的是get谓词),却没有真正的发送期待中的get请求。 Options是什么鬼?之前开发一直没有遇到过。。后来问了下同事,说是这是由于跨域请求引起的。。
查找资料获得:
HTTP权威指南对Options方法的解释:
OPTIONS方法请求web服务器告知其支持的各种功能。可以询问服务器通常支持哪些方法,或者对某些特殊资源支持哪些方法。(有些服务器可能只支持对一些特殊类型的对象使用特定的操作)
W3C规范中,跨域请求分为简单请求和复杂请求。简单请求不需要发送Options嗅探请求,但是只能发送简单的get/head/post请求,且不能自定义http的headers
。复杂请求包含preflighted请求
和preflighted认证请求
。复杂请求在发送真正的请求前会提前发送一次Options请求(嗅探、预检请求),XHR
会根据返回的Access-Control-*
等头信息判断是否有对指定站点的访问权限,检查该请求是否是可靠安全的。如果options获得的回应是拒绝性质的(或者没有权限),会停止发送实际请求信息。
处理方法:
一般来说这个是后台需要处理的,开放所有的或者预料中的请求方法权限。
网友评论