猿问

为什么发送选项请求并禁用它?

为什么发送选项请求并禁用它?

我正在构建一个网络API。我发现每当我使用Chrome发布,进入我的API,总有一个选项请求发送之前,真正的请求,这是相当恼人的。目前,我让服务器忽略任何选项请求。现在我的问题是,发送选项请求以使服务器负载翻倍有什么好处?有没有办法完全阻止浏览器发送选项请求?



跃然一笑
浏览 415回答 3
3回答

慕莱坞森

已经经历过这个问题,下面是我对这个问题的结论和我的解决方案。根据CORS策略(强烈建议你阅读它)如果浏览器认为需要的话,你不能强迫浏览器停止发送选项请求。有两种方法可以解决这个问题:确保您的请求是“简单的请求”。集Access-Control-Max-Age对于选项请求简单请求一个简单的跨站点请求满足以下所有条件:唯一允许的方法是:到达头岗除了由用户代理(例如连接、用户代理等)自动设置的标头外,唯一允许手动设置的标头是:接受接受语言内容语言内容-类型内容类型标头的唯一允许值是:应用程序/x-www-表单-urlencode多部分/表格-数据文本/纯文本一个简单的请求不会导致飞行前选项请求。设置选项检查的缓存您可以设置Access-Control-Max-Age对于选项请求,使其在权限过期之前不会再次检查权限。访问控制-最大年龄提供的值,以秒为单位的响应,飞行前请求可以缓存多长时间,而不发送另一个飞行前请求。注意到的限制对于Chrome,最大秒数为Access-Control-Max-Age是600这是10分钟,根据Chrome源代码Access-Control-Max-Age每次只对一个资源起作用,例如,GET具有相同URL路径但不同查询的请求将被视为不同的资源。因此,对第二个资源的请求仍将触发飞行前请求。
随时随地看视频慕课网APP
我要回答