我有一個.net核心api,我想只接受來自一個域的調用。那裏有一個Angular 4應用程序。.Net核心API CORS,鎖定到只有一個域(Angular應用程序)
我創造這樣的CORS政策...
services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigin",
builder => builder.WithOrigins("http://www.test.com").AllowAnyHeader());
});
和我加載它像這樣...
app.UseCors("AllowSpecificOrigin");
我本來預計只能從對角的應用程序調用域可以打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();
}
這聽起來很有趣,什麼是來自服務器的響應頭? (你是使用Kestrel還是IIS管道) – Coemgen
響應中的標題看起來像這樣... Content-Encoding→gzip Content-Type→text/plain;字符集= UTF-8 日期→週四,2017年6月29日11時45分28秒GMT 服務器→紅隼 傳輸編碼→分塊 因人而異→接受編碼 X供電,通過→ASP.NET –
嗯,我我不確定你的政策是否被考慮過。 Kestrel應該添加一個頭文件(看看這個微軟示例https://docs.microsoft.com/en-us/aspnet/core/security/cors#how-cors-works) – Coemgen