如何使用fetch 的 mode: 'no-cors'
时间: 2024-10-05 17:02:15 浏览: 9
`fetch` 是 JavaScript 中用于从服务器获取数据的一个现代 API,它返回一个 Promise 对象,你可以用来处理异步请求。当你想进行跨域请求时(当你尝试访问其他域名下的资源),但又不希望发送身份凭证(如 cookies 或者认证信息),可以使用 `mode: 'no-cors'`。
设置 `mode: 'no-cors'` 后,请求会被限制为简单的 GET 和 POST 方法,而且不能包含任何可能改变服务器状态或触发响应头部里任何非标准字段(如 `Set-Cookie`)的数据。这使得你只能获取到响应体,而不能访问响应头里的 CORS 相关信息。
以下是一个使用 `no-cors` 模式发起请求的例子:
```javascript
fetch('https://api.example.com/data', {
method: 'GET',
headers: {
// 只能设置基本的、不受同源策略影响的头部
'Content-Type': 'application/json'
},
mode: 'no-cors'
})
.then(response => {
// 由于是 no-cors 请求,response.ok 和 response.headers 无效
if (response.status === 200) {
return response.json();
} else {
throw new Error(`Request failed with status ${response.status}`);
}
})
.catch(error => console.error('Error:', error));
```