Postman需手动设置OPTIONS请求:点击方法旁“更多”图标→Edit Request→改Method为OPTIONS,清空Body,添加Origin和Access-Control-Request-Method等必要Header,否则无法触发预检逻辑。

Postman 本身不提供“直接选 OPTIONS 方法”的快捷入口,但你能手动发,而且必须手动设——否则它默认按 GET 或 POST 处理,根本不会触发预检逻辑。
Postman 怎么手动设置 OPTIONS 请求方法
Postman 界面左上角的请求方法下拉框默认只显示 GET / POST / PUT / DELETE 等常用项,OPTIONS 不在其中。这不是 bug,是设计取舍:它假设你极少主动发 OPTIONS,多数情况由浏览器自动触发。
要发,得手动编辑:
- 点击方法下拉框右侧的 ▼(不是下拉箭头,是旁边的“更多”图标)
- 选择 Edit Request → 弹出窗口里把 Method 改成
OPTIONS - 清空
Body标签页里的所有内容(OPTIONS预检请求不允许带 body) - 确保
Headers里没加任何自定义字段(比如Authorization、X-Request-ID),否则会变成“带凭据的复杂预检”,需要后端额外配置Access-Control-Allow-Headers才能通过
为什么用 Postman 发 OPTIONS 很容易收不到响应
常见现象是 Postman 显示 Could not get any response 或卡在 pending,不是网络问题,而是后端压根没处理 OPTIONS 路由。
典型原因:
Postman Mac版是一款专为macOS设计的API开发与测试工具,凭借简洁的界面和强大的功能,深受开发者喜爱。它支持发送各种HTTP请求(GET、POST、PUT等),轻松管理接口集合、环境变量和模拟服务器。Mac用户可享受原生性能、快捷键优化及与系统无缝集成的体验,适用于接口调试、自动化测试和文档生成。无论是个人项目还是团队协作,Postman for Mac都能提升API开发效率,是ma
- Spring Boot 默认不注册
OPTIONShandler,除非显式配置@CrossOrigin或全局CorsConfiguration - Nginx 没配
location拦截OPTIONS并返回 204,而是直接透传给后端,而后端又没 route 匹配,结果 405 或 404 - 前端代码里写了
credentials: true,但 Postman 没开 “Send credentials” 开关(右上角齿轮 → Settings → “Send cookies and authentication headers”),导致预检头不一致
验证是否真被拦截:在终端用 curl -X OPTIONS -I https://your-api.com/path,看返回状态码和 Access-Control-Allow-Origin 头是否存在。
Postman 发 OPTIONS 时 Header 的关键限制
浏览器发预检时,OPTIONS 请求的 Origin 和 Access-Control-Request-Method 是必带的;Postman 不自动加,你得手填:
- 必须加
Origin头,值为任意合法域名(如https://localhost:3000),否则后端 CORS 中间件可能跳过校验 - 必须加
Access-Control-Request-Method,值为你真正想发的请求方法(如POST),否则预检无意义 - 如果真实请求带自定义头(如
X-App-Version),还得加Access-Control-Request-Headers,值为逗号分隔的小写字符串(如x-app-version) - 不要加
Content-Type: application/json—— 这是真实请求的头,不是预检请求该带的
调试跨域时,别只盯着 OPTIONS 成功就以为万事大吉
OPTIONS 返回 200 + 正确 CORS 头,只说明“预检通过”,不代表后续 POST 就一定成功。最容易忽略的点是:
- 后端返回的
Access-Control-Allow-Origin是具体域名(如https://a.com),但前端实际跑在https://b.com,照样失败;用*时不能同时设Access-Control-Allow-Credentials: true - 真实
POST请求的Content-Type和预检时声明的Access-Control-Request-Headers不匹配(比如预检说支持application/json,但真实请求发了text/plain) - Postman 里开了 “Auto Persist Cookies”,但后端没返回
Access-Control-Allow-Credentials: true,导致浏览器后续拒绝携带 cookie
真要模拟完整流程,得连发两次:一次 OPTIONS 看预检响应,一次手动切回 POST 带上相同 Origin 和 Credentials 设置,再观察真实响应头和 body。










