对预检请求的响应未通过访问控制检查:在标头中使用身份验证时,它没有 HTTP 正常状态



我已经在ISS服务器中部署了一个.Net Core Applicaition。在客户端站点中,我有一个使用 axios 与服务器通信的 React 应用程序。

在服务器上,这就是我修改 Web 配置的方式

<httpProtocol>
<customHeaders>
<remove name="Access-Control-Allow-Origin" />
<add name="Access-Control-Allow-Credentials" value="true" />
<add name="Access-Control-Allow-Origin" value="http://localhost:3000" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Access-Control-Allow-Headers, Content-Type, Authorization" />
<add name="Access-Control-Max-Age" value="86400" />
</customHeaders>
</httpProtocol>

在客户端上

const getRequestConfig = async (): Promise<AxiosRequestConfig> => {
let accessToken = await OAuth2Service.getInstance().GetAccessToken();
return {
headers: {
Authorization: `Bearer ${accessToken}`
},
withCredentials: true
};
};
let config = await getRequestConfig();
const response = await axios.get(
`https://myserver/AppService/api/metadata/office`,
config
);

我收到预检 CORS 错误

访问 XMLHttpRequest at "https://myserver/AppService/api/metadata/office"来自原产地 "http://localhost:3000"已被 CORS 策略阻止:对 预检请求未通过访问控制检查:它没有 HTTP 正常状态。

如果我从请求标头中删除身份验证,它将通过 CORS,因为它是一个简单的请求。

  1. 我是否错过了服务器站点或客户端站点上的某些配置?
  2. 难道只有在本地主机中才存在此问题,并且在部署站点时会通过 CORS?在这种情况下,我可以在浏览器中禁用 CORS。

尝试修复配置文件中的问题后。我意识到问题出在.NET Core App上。首先,应用程序需要工作。如果应用程序在部署后在服务器中崩溃,则客户端中会出现 CORS 问题,而无需任何解释。并且您需要在服务器应用程序的启动文件中设置 CORS。重新发布应用程序并删除客户端中的所有自定义标头以及withCredentials后,我能够传递持有者令牌,而不会收到任何预检 CORS 错误。

最新更新