我阅读了这篇问题和这篇问题。前者仅解释了'no-cors'和'same-origin'的区别;后者建议不要使用'no-cors',因为响应不透明(Javascript无法读取或处理有用信息):
“实际上,在实践中基本上永远不需要使用mode: 'no-cors'——除非是一些非常有限的情况。这是因为设置mode: 'no-cors'实际上是告诉浏览器,“在任何情况下都要阻止我的前端JavaScript代码查看响应体和标头的内容。” 在大多数情况下,这显然不是您想要的。”
有人能指出这些“有限情况”的示例,我们何时需要使用“no-cors”(即使响应是Opaque)吗?
我唯一能想到的情况是一种单向通信;如果客户端只需向服务器发送GET或POST以便服务器跟踪请求发生的情况(例如增加请求计数器)...
...那么响应为OpaqueResponse就足够了;也就是说,客户端只需要知道请求是否成功(状态码200),不需要任何有效载荷响应。
“实际上,在实践中基本上永远不需要使用mode: 'no-cors'——除非是一些非常有限的情况。这是因为设置mode: 'no-cors'实际上是告诉浏览器,“在任何情况下都要阻止我的前端JavaScript代码查看响应体和标头的内容。” 在大多数情况下,这显然不是您想要的。”
有人能指出这些“有限情况”的示例,我们何时需要使用“no-cors”(即使响应是Opaque)吗?
我唯一能想到的情况是一种单向通信;如果客户端只需向服务器发送GET或POST以便服务器跟踪请求发生的情况(例如增加请求计数器)...
...那么响应为OpaqueResponse就足够了;也就是说,客户端只需要知道请求是否成功(状态码200),不需要任何有效载荷响应。
我的想法是一个有效的例子吗?有人可以推荐其他可能性/用例/“no-cors”使用的例子吗?
<script>
、<link rel="stylesheet">
、<img>
、<video>
、<audio>
、<object>
、<embed>
或<iframe>
元素的内容时(这是有效的,因为这些元素的跨域嵌入资源是允许的)。 - sideshowbarker