部署my-app时遭遇CORS跨域错误,请求被拦截寻求解决方案
解决CORS错误:localhost:3000访问API被拦截的问题
你的报错核心是请求源http://localhost:3000不在服务器允许的CORS源列表里,当前配置还存在两个关键问题:
- 同时启用了
cors中间件和自定义响应头设置,两者可能产生冲突; - 配置的允许源是
https://pathology.rayaninfosolutions.in,和实际发起请求的http://localhost:3000不匹配,导致浏览器拦截预检请求。
具体解决步骤
- 删掉自定义的响应头设置代码,统一用
cors中间件配置,避免冲突 - 修改
cors配置,把http://localhost:3000加入允许的源列表:// 兼容开发和生产环境的多源配置 app.use(cors({ origin: ['http://localhost:3000', 'https://pathology.rayaninfosolutions.in'], methods: ['GET', 'POST', 'OPTIONS', 'PUT', 'PATCH', 'DELETE'], allowedHeaders: ['Content-Type', 'Authorization'], credentials: true })); - 确保服务器能正确响应OPTIONS预检请求:如果路由里有拦截OPTIONS请求的逻辑,直接移除即可(
cors中间件默认会处理这类请求) - 验证配置:重启服务器后,打开浏览器开发者工具的「网络」面板,查看请求的响应头,确认存在
Access-Control-Allow-Origin: http://localhost:3000(或匹配当前请求源的对应值)
额外注意
- 生产环境上线时,记得把
http://localhost:3000替换成实际的前端域名 - 不要在开启
credentials: true的同时设置origin: '*',浏览器会禁止这种冲突配置
内容的提问来源于stack exchange,提问作者Danish Ahmad
相关产品推荐
相关产品推荐

