Заголовки CORS ядра ASP.NET не отображаются

У меня есть веб-приложение File - New Project - MVC в моем VS 2015, работающее на netcoreapp1.0 с импортом: «dotnet5.6» и «portable-net45 + win8», в котором есть стандартные значения api, возвращающие массив строк.

В моем Startup.cs я только добавил строку:

services.AddCors(opt => opt.AddPolicy("test", p => p.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().Build()));

в метод ConfigureServices перед services.AddMvc (). А к методу Configure я добавил app.UseCors ("test"), чтобы использовать политику:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    app.UseCors("test");

    app.UseMvc();
}

Когда я вызываю этот api в Postman, я получаю следующие заголовки ответа:

Content-Type →application/json; charset=utf-8
Date →Tue, 23 Aug 2016 08:35:19 GMT
Persistent-Auth →true
Server →Kestrel
Transfer-Encoding →chunked
X-Powered-By →ASP.NET
X-SourceFiles →=?UTF-8?B?XFxiaWp0amVzLmJlXGRhdGFcaG9tZWRpclxuaWxzZ1x2aXN1YWwgc3R1ZGlvIDIwMTVcUHJvamVjdHNcV2ViQXBwbGljYXRpb240XHNyY1xXZWJBcHBsaWNhdGlvbjRcYXBpXHZhbHVlcw==?=

Когда я вызываю его с нашего сайта SharePoint (например, это может быть любой веб-сайт, просто чтобы убедиться, что он не с localhost) с помощью JQuery:

$.ajax({url: 'http://localhost:60079/api/values', success: function(data){ console.log(data); }, error: function(err){ console.error(err); } });

Я получаю эти заголовки ответов (на голландском языке):

Antwoord    HTTP/1.1 200 OK
Transfer-Encoding   chunked
Content-Type    application/json; charset=utf-8
Server  Kestrel
X-SourceFiles   =?UTF-8?B?XFxiaWp0amVzLmJlXGRhdGFcaG9tZWRpclxuaWxzZ1x2aXN1YWwgc3R1ZGlvIDIwMTVcUHJvamVjdHNcV2ViQXBwbGljYXRpb240XHNyY1xXZWJBcHBsaWNhdGlvbjRcYXBpXHZhbHVlcw==?=
Persistent-Auth true
X-Powered-By    ASP.NET
WWW-Authenticate    Negotiate oRswGaADCgEAoxIEEAEAAACO2brFdOYicQAAAAA=
Date    Tue, 23 Aug 2016 09:04:48 GMT

Предварительный запрос не отправляется, в сетевом мониторе IE 11 отправляется только 1 запрос.

Как видно из заголовков, заголовки CORS не добавляются.

Я также пробовал это в приложении ASP.NET Core RC1, которое у меня есть, оно также не показывает никаких заголовков.

Я думаю, что CORS работают, потому что я могу получить доступ к api из любого источника. Однако, если я использую WithOrigin () и, например, не добавляю SharePoint, он все равно позволяет мне вызывать URL-адрес. Я также тестировал это в Fiddler, Chrome и Firefox, ни один из них не показывает заголовки.

Как я могу добавить заголовки в ASP.NET Core и защитить свои API с помощью WithOrigins ()?


person Appsum Solutions    schedule 23.08.2016    source источник
comment
В настоящее время у меня такая же проблема с моим приложением .NET Core 2.0. Вы когда-нибудь придумали, как добавить заголовки к ответу?   -  person wdspider    schedule 18.09.2017


Ответы (1)


Я была такая же проблема. Я пробую каждый найденный ответ на этот вопрос, но у меня ничего не помогло. Итак, поскольку «правильный путь» не работает, я решил сделать это вручную:

[HttpOptions]
public IActionResult YourMethod()
{
    Response.Headers.Add("Access-Control-Allow-Origin", "*");
    Response.Headers.Add("Access-Control-Allow-Methods", "OPTIONS,POST");
    Response.Headers.Add("Access-Control-Allow-Headers", "*");
    return Ok();
}
person sibvic    schedule 14.03.2018