gpt4 book ai didi

angular - .Net Core API CORS,只锁定一个域(Angular 应用程序)

转载 作者:行者123 更新时间:2023-12-05 07:42:06 26 4
gpt4 key购买 nike

我有一个 .net 核心 api,我只想接受来自一个域的调用。那里托管了一个 Angular 4 应用程序。

我正在创建这样的 cors 策略......

    services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigin",
builder => builder.WithOrigins("http://www.test.com").AllowAnyHeader());
});

然后像这样加载它...

  app.UseCors("AllowSpecificOrigin");

我原以为只有来自域上 Angular 应用程序的调用才能访问 api,但是如果我在 Chrome Postman 中创建一个调用我仍然可以直接点击 api。

我做错了什么?我想锁定除 Angular 应用程序之外的所有流量。

这是我的 startup.cs 的更多详细信息......

    public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", true, true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", true)
.AddEnvironmentVariables();


Configuration = builder.Build();
}

public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddCors();

services.Configure<AppSettings>(Configuration);
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseCors(builder => builder.WithOrigins(new[] { "http://test.com" })
.AllowCredentials());


app.UseDeveloperExceptionPage();

app.UseMvc(routes =>
{
routes.MapRoute(
"default",
"{controller=ping}/{action=get}/{id?}");
});

app.UseStaticFiles();

}

最佳答案

响应更简单:

CORS headers are only sent on cross domain requests See that example

因此,当您在本地进行测试时,它不起作用。尝试将您的应用程序托管在具有域的服务器上并与 postman 联系。它不会起作用。

编辑:

好的,是你的配置文件不正确。您需要将 AddCors 放在 AddMVC 之前。因为,在执行管道中,框架会按照你在启动时声明的顺序执行..

services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigin",
politique => politique.WithOrigins("{yourdomain}").AllowAnyHeader().AllowAnyMethod().AllowCredentials());
});

eapp.UseCors("AllowSpecificOrigin");

关于angular - .Net Core API CORS,只锁定一个域(Angular 应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44824028/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com