我有一个使用Angular Framework和Asp.net Core的项目。
在我的ConfigureServices中,有以下代码:
services.AddCors(options =>
{
options.AddPolicy(
"CorsPolicy",
builder => builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
然后按以下步骤取消配置:
app.UseCors("CorsPolicy");
app.UseMvc();
然后在 BaseApiController
中添加EnbaleCors属性[EnableCors("CorsPolicy")]
public class BaseApiController : Controller
在Angular中添加以下内容:
return this.http
.post(url, body, { headers: headers, withCredentials: true })
.map((response: Response) => {
return response as any;
})
当我运行该应用程序时,我在网络中有2个请求,其中之一是请求方法:状态代码为204的选项,其他内容都没有。
我的问题在哪里?
感谢您抽出宝贵的时间分享您的想法
答案 0 :(得分:1)
这不是问题,也不必担心。
出于安全原因,浏览器限制跨域HTTP请求 从脚本内部启动。例如,
XMLHttpRequest
和 提取API遵循同源政策。这意味着一个网络 使用这些API的应用程序只能从 加载应用程序的来源相同,除非来自 另一个来源包括正确的CORS标头。
OPTIONS
请求只是跨源之间安全网络调用的安全检查。因此,当您发出这样的请求时,客户端会将OPTIONS
请求发送到相同的地址,以确保可以安全地发送原始请求(GET
/ POST
)。>