Angular 为什么在Web API中启用CORS时会收到选项请求?
我有一个带有Angular框架和Asp.net核心的项目 在我的配置服务中,我有以下代码:Angular 为什么在Web API中启用CORS时会收到选项请求?,angular,asp.net-web-api,asp.net-core,cors,Angular,Asp.net Web Api,Asp.net Core,Cors,我有一个带有Angular框架和Asp.net核心的项目 在我的配置服务中,我有以下代码: services.AddCors(options => { options.AddPolicy( "CorsPolicy", builder => builder .AllowAnyOrigin()
services.AddCors(options =>
{
options.AddPolicy(
"CorsPolicy",
builder => builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
并按如下方式取消配置:
app.UseCors("CorsPolicy");
app.UseMvc();
然后在BaseApiController中添加了EnbaleCors属性
具体如下:
return this.http
.post(url, body, { headers: headers, withCredentials: true })
.map((response: Response) => {
return response as any;
})
当我运行应用程序时,我在网络中有2个请求,其中一个请求方法:状态代码为204无内容的选项,另一个在我的请求中
我的问题在哪里
感谢您抽出时间与我们分享您的想法这不是问题,不必担心 出于安全原因,浏览器限制跨源HTTP请求 从脚本中启动。例如,XMLHttpRequest和 获取API遵循相同的源策略。这意味着网络 使用这些API的应用程序只能从 加载应用程序的来源相同,除非响应来自 另一个原点包括右CORS标头
选项请求只是对跨来源之间的安全网络呼叫进行安全检查。因此,当您发出此类请求时,客户端将向同一地址发送选项请求,以确保安全地发送原始requestGET/POST。@arcreezy Thank,我可以在生产环境中禁用或隐藏此选项请求吗?@SaeidMirzaei我认为如果客户端和服务器位于不同的域中,您不能禁用客户端发送CORS请求。通过将请求的内容类型更改为application/x-www-form-urlencoded或multipart/form data或text/plain,可能有一种解决方法,但我不鼓励这样做。我没有任何不同的域,我有两个子域,如“api.my doamin.com”和“client.my doamin.com”。在这种情况下可以吗?@SaeidMirzaei我指的是不同域的客户端和服务器,而不是URL。正如我所说的,它不会引起任何问题。
return this.http
.post(url, body, { headers: headers, withCredentials: true })
.map((response: Response) => {
return response as any;
})