postman 本身不受 cors 限制,需配置 laravel 6 后端启用 fruitcake/laravel-cors 并正确设置中间件、路由组及 config/cors.php;用 options 请求验证响应头是否包含 access-control-allow-origin 等字段。

Postman 本身不受 CORS 限制,所以“配置 Postman 来支持 CORS”这个说法不准确——真正要配的是 Laravel 6 后端,让浏览器前端能跨域访问;而 Postman 只是用来验证后端是否已正确开启 CORS 的工具。
确认 Laravel 6 已启用 fruitcake/laravel-cors
这是最基础也最容易漏的一步:
- 执行 composer require fruitcake/laravel-cors 安装包(Laravel 6 需用 v1.x 版本)
- 确保 App\Http\Kernel 中的
$middlewareGroups['api']包含:\Fruitcake\Cors\HandleCors::class - 运行 php artisan vendor:publish --provider="Fruitcake\Cors\CorsServiceProvider" 发布配置文件
- 检查 config/cors.php 中
'allowed_origins'是否包含你的前端地址(如['http://localhost:3000']),不要写*(尤其带凭证时)
用 Postman 验证 CORS 是否生效
别只看 GET/POST 请求成功就认为 OK,必须主动测试预检 OPTIONS 请求:
- 在 Postman 新建一个 OPTIONS 请求,URL 填你实际要跨域调用的接口地址(例如
http://your-app.test/api/users) - 手动添加请求头:
Origin: http://localhost:3000Access-Control-Request-Method: GET - 发送后检查响应头,必须包含:
Access-Control-Allow-Origin: http://localhost:3000Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONSAccess-Control-Allow-Headers: *或明确列出的字段(如Authorization, Content-Type) - 如果返回 404 或缺关键头,说明中间件没生效——重点查路由是否存在、是否注册在
api组、是否被其他中间件(如 web)干扰
Postman 测试 API 时的配套要点
CORS 配对只是前提,Postman 要测通还需同步处理其他常见问题:
-
路由前缀:确保请求 URL 带
/api/(如http://localhost:8000/api/users),因为 Laravel 默认 api.php 路由自动加了该前缀 -
认证头:若接口需要 Sanctum 或 Passport token,从登录响应中取
token或access_token,填入 Postman 的 Authorization → Bearer Token - Content-Type:发 JSON 数据时,Body 选 raw → JSON,且确保 JSON 语法合法(双引号、无尾逗号)
-
避免 CSRF 干扰:API 路由不要加
middleware('web'),否则可能触发重定向或 419 错误
为什么 Postman “能通”但前端报 CORS?
这是典型错觉:Postman 不走浏览器同源策略,它能拿到响应不代表浏览器能读取。只要前端 fetch 报 “Blocked by CORS policy”,问题一定在服务端响应头缺失或不匹配。此时回过头用上面的 OPTIONS 方法验证,比反复改前端代码更高效。











