请求:mode 属性
mode
是 Request
接口的只读属性,包含请求的模式(例如,cors
、no-cors
、same-origin
、navigate
或 websocket
)。这用于确定跨源请求是否会导致有效响应,以及响应的哪些属性是可读的。
值
- 一个
RequestMode
值。 -
关联的mode,其可用值为
same-origin
-
如果以这种模式对另一个来源发出请求,则结果为错误。您可以使用此方法确保始终对您的来源发出请求。
no-cors
-
阻止方法成为除
HEAD
、GET
或POST
之外的任何内容,并阻止标头成为除CORS 安全列表请求标头之外的任何内容。如果任何 ServiceWorker 拦截这些请求,它们可能不会添加或覆盖任何标头,除非这些标头是CORS 安全列表请求标头。此外,JavaScript 无法访问生成的Response
的任何属性。这确保了 ServiceWorker 不影响 Web 的语义,并防止由于跨域泄露数据而导致的安全和隐私问题。 cors
-
允许跨源请求,例如访问第三方供应商提供的各种 API。预计这些请求将遵守CORS 协议。在
Response
中仅公开有限的标头集,但主体是可读的。 -
用于支持导航的模式。
navigate
值仅供 HTML 导航使用。仅在文档之间导航时才会创建导航请求。 websocket
-
仅在建立 WebSocket 连接时使用的特殊模式。
默认模式
请求可以通过多种方式发起,并且请求的模式取决于其发起方式。
例如,当使用 Request()
构造函数创建 Request
对象时,该 Request
的 mode
属性的值将设置为 cors
。
但是,对于除 Request()
构造函数之外创建的请求,通常使用 no-cors
作为模式;例如,对于从标记中发起的嵌入式资源,除非存在 crossorigin
属性,否则在大多数情况下,请求使用 no-cors
模式发出,即对于 <link>
或 <script>
元素(模块使用时除外),或 <img>
、<audio>
、<video>
、<object>
、<embed>
或 <iframe>
元素。
示例
在以下代码段中,我们使用 Request()
构造函数(用于与脚本位于同一目录中的图像文件)创建一个新请求,然后将请求模式保存在变量中
const myRequest = new Request("flowers.jpg");
const myMode = myRequest.mode; // returns "cors" by default
规范
规范 |
---|
Fetch 标准 # ref-for-dom-request-mode② |
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。