Fetch API中method和mode均为可选关键配置项:method指定请求方法(如'POST'/'PUT'/'DELETE',默认'GET'),mode控制跨域策略(如'cors'/'same-origin'/'no-cors'),二者需配合使用且注意大小写、CORS预检及响应处理等细节。

在 Fetch API 中,可以通过 options 对象 明确指定请求方法(method)和请求模式(mode),两者都是可选但关键的配置项。
设置自定义请求方法(GET、POST、PUT、DELETE 等)
Fetch 默认使用 GET 方法。如需其他方法,必须显式传入 method 选项:
-
method: 'POST':常用于提交表单或创建资源 -
method: 'PUT'或'PATCH':更新现有资源 -
method: 'DELETE':删除资源 - 注意:
HEAD和OPTIONS也合法,但不会携带请求体
示例:
fetch('/api/users', { method: 'POST', body: JSON.stringify({ name: 'Alice' }) })控制请求模式(mode)以处理跨域与缓存策略
mode 决定浏览器如何处理跨域请求及 CORS 行为,常用值有:
立即学习“Java免费学习笔记(深入)”;
-
'cors'(默认):允许跨域,但要求服务端返回合法 CORS 响应头(如Access-Control-Allow-Origin) -
'same-origin':仅限同源请求,跨域会直接报错 -
'no-cors':发出“不带 CORS 的请求”,只能用于简单请求(如GET/POST文本),响应为opaque类型(无法读取状态码、响应头或响应体) -
'navigate':主要用于页面导航(如表单提交跳转),一般不用在普通 fetch 调用中
示例(明确要求同源):
fetch('/data.json', { mode: 'same-origin' })method 和 mode 需要配合使用
某些组合有隐含限制:
- 发送
POST、PUT等带 body 的请求时,若服务端未正确配置 CORS,mode: 'cors'会触发预检(OPTIONS请求),而mode: 'no-cors'则无法获取响应内容 - 想绕过 CORS 检查又需要读取响应?不可行——这是浏览器安全机制,必须由服务端配合开启 CORS 或使用代理
- 开发中调试时,可临时设为
mode: 'no-cors'观察是否发起请求(通过 Network 面板),但不能用于实际数据处理
常见遗漏点提醒
容易忽略的细节:
-
method值必须是大写字符串(如'POST',不是'post') - 使用
POST/PUT时,若发送 JSON,别忘了设置headers:{ 'Content-Type': 'application/json' } -
mode不影响同源请求行为,只对跨域场景起作用 - 服务端返回 4xx/5xx 状态码不会导致 Promise 拒绝,需手动检查
response.ok或response.status


















