The*_*Pea 7 fetch cors fetch-api
我读了这个问题和 这个问题。前者只解释了“no-cors”与“same-origin”;后者建议 'no-cors' 没有用,因为不透明响应(Javascript 无法读取/执行任何有用的操作):
你基本上从不想在实践中使用 mode: 'no-cors'——除非在一些非常有限的情况下。那是因为设置模式:'no-cors' 实际上对浏览器说的是,“在任何情况下都阻止我的前端 JavaScript 代码查看响应正文和标题的内容。” 在大多数情况下,这显然不是您想要的。
有人可以告诉我们这些“有限情况”的例子是什么,我们希望使用“无cors”(即使响应是不透明的?)
我能想到的唯一情况是一种单向通信;如果客户端向服务器发送 GET 或 POST 就足够了,那么服务器就可以跟踪请求的发生;(例如,增加请求计数器);...
...那么响应是一个 OpaqueResponse 就足够了;即客户端只需要知道请求是否成功(状态 200),不需要任何负载响应。
我的想法是一个有效的例子吗?有人可以推荐其他可能性/用例/'no-cors'用法的例子吗?
eed*_*rah 10
请记住,CORS 设置不会阻止请求到达服务器 - 这就是身份验证和 CSRF 的用途。相反,它会阻止页面读取响应。请求依然是:
Origin标题,Access-Control-Allow-Origin. 如果它与浏览器认为的相符,Origin则浏览器会让页面看到请求的结果。这就是关键 -同源策略和 CORS 设置不允许协作浏览器中的页面查看响应。
另请注意,上面有一个步骤 0.,这是发送一个 OPTIONS“飞行前检查”,以检查如果请求通过,是否允许页面查看结果?如果没有,那么他们认为发送请求没有什么意义——但这只是一个假设。
mode: no-cors做了两件事:
try { const notNeeded = fetch(...) } catch { console.log('Tough luck, do nothing') }CORS 执行上述操作。它不执行以下操作:
| 归档时间: |
|
| 查看次数: |
2883 次 |
| 最近记录: |