基于Material-Kit的项目连接数据库遇CORS报错,请求排查原因
你的CORS错误原因详解
这个报错的核心问题是跨域预请求(Preflight Request)的响应配置不匹配,具体来说是你犯了一个常见的CORS配置误区:
- 首先,
access-control-allow-origin是服务器返回的响应头,绝对不是客户端请求该带的头!你在前端请求里错误地把它作为请求头发送了,这本身就是用法错误。 - 当浏览器发起跨域请求(比如你从
http://localhost:3001去请求另一个域名的appindex_platform.php接口),如果是复杂请求(比如带自定义头、非表单格式的POST等),浏览器会先自动发一个OPTIONS预请求,用来询问服务器:“我接下来要发的请求带这些头,你允许吗?” - 服务器收到预请求后,会通过
Access-Control-Allow-Headers这个响应头,列出它允许客户端发送的所有请求头。你的请求里带了access-control-allow-origin这个不该有的头,而服务器的Access-Control-Allow-Headers配置里根本没把它加进去,所以浏览器直接判定这个请求不合法,拦截了它,就抛出了你看到的这个错误。
快速修复步骤
- 先检查你的前端请求代码,立刻移除
access-control-allow-origin这个请求头——这个头是服务器用来告诉浏览器“允许哪个源访问我”的,轮不到客户端来发。 - 如果你的请求确实需要携带其他自定义请求头(比如
Authorization、X-Requested-With这类),要确保服务器端的Access-Control-Allow-Headers配置里包含这些头。比如PHP后端可以这样设置:
header("Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With");
(这里只列了常见的,你要根据自己实际的请求头来补充)
内容的提问来源于stack exchange,提问作者Mohammed Fallah
相关产品推荐
相关产品推荐

