Laravel 8 CORS配置错误:限制仅指定域名访问API GET请求未生效
配置错误点及修复方案
- 路径规则存在多余空格
你配置的paths项中api / *、sanctum / csrf-cookie存在多余空格,会导致路径匹配失效,CORS规则不会应用到对应接口上,需要删除空格调整为正确的路径匹配规则。 - 允许的来源缺少协议前缀
CORS校验时Origin头会携带完整的协议信息,你只填写www.exampledomain.com无法匹配到http://www.exampledomain.com的请求,需要补全协议前缀。 - 请求方法未做限制
你配置的allowed_methods为*代表允许所有请求方法,若只需要允许GET请求需要调整为对应值。
修正后的完整配置
'paths' => ['api/*', 'sanctum/csrf-cookie'], 'allowed_methods' => ['GET'], 'allowed_origins' => ['http://www.exampledomain.com'], 'allowed_origins_patterns' => [], 'allowed_headers' => ['*'], 'exposed_headers' => [], 'max_age' => 0, 'supports_credentials' => false,
额外注意事项
- 修改配置后需要执行
php artisan config:clear清除配置缓存,新配置才会生效。 - CORS是浏览器端的安全限制,仅会拦截浏览器环境下的跨域请求,如果你用Postman、curl等工具直接发起请求,不管域名是什么都能正常拿到响应,属于正常现象。
- 确认你的API路由都添加了
api前缀,否则api/*的路径规则无法匹配到对应路由。
内容的提问来源于stack exchange,提问作者gqboy
相关产品推荐
相关产品推荐

