Request.mode - Web API 接口参考 编辑
Request
接口的 mode
只读属性包含请求的模式(例如:cors
、 no-cors
、 cors-with-forced-preflight
、 same-origin
或 navigate
。)这用于确定跨域请求是否能得到有效的响应,以及响应的哪些属性是可读的。
语法
var myMode = request.mode;
属性值
一个 RequestMode
值。
same-origin
— 如果使用此模式向另外一个源发送请求,显而易见,结果会是一个错误。你可以设置该模式以确保请求总是向当前的源发起的。no-cors
— 保证请求对应的 method 只有HEAD
,GET
或POST
方法,并且请求的 headers 只能有简单请求头 (simple headers)。如果 ServiceWorker 劫持了此类请求,除了 simple header 之外,不能添加或修改其他 header。另外 JavaScript 不会读取Response
的任何属性。这样将会确保 ServiceWorker 不会影响 Web 语义(semantics of the Web),同时保证了在跨域时不会发生安全和隐私泄露的问题。cors
— 允许跨域请求,例如访问第三方供应商提供的各种 API。预期将会遵守 CORS protocol 。仅有有限部分的头部暴露在Response
,但是 body 部分是可读的。navigate
— 表示这是一个浏览器的页面切换请求(request)。 navigate请求仅在浏览器切换页面时创建,该请求应该返回HTML。
默认模式
可以以多种方式发起请求,并且请求的模式取决于发起请求的特定方式。
例如,当一个 Request
对象以 Request.Request
方式创建,该Request
的 mode
的值为 cors
。
然而,除了以 Request.Request
创建的请求,模式通常为 no-cors
。例如,对与嵌入资源发起的请求,除非存在 crossorigin
属性,即对于 <link>
、 <script>
(除了和模块一起使用之外)、 <img>
、 <audio>
、 <video>
、 <object>
、 <embed>
还有 <iframe>
元素,在大多数情况下是使用 no-cors
模式。
示例
在下面代码段中,我们使用 Request.Request()
创建请求(请求与脚本位于同一目录中的图像文件),然后将请求模式保存在一个变量中:
In the following snippet, we create a new request using theconstructor (for an image file in the same directory as the script), then save the request mode in a variable:
var myRequest = new Request('flowers.jpg');
var myMode = myRequest.mode; // returns "cors" by default
规范
规范 | 状态 | 备注 |
---|---|---|
Fetch mode | Living Standard | Initial definition |
浏览器兼容性
BCD tables only load in the browser
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.参见
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论