.NetCore jquery Нет заголовка «Access-Control-Allow-Origin» на запрошенном ресурсе. Происхождение 'null', следовательно, не разрешено - PullRequest
0 голосов
/ 15 мая 2018

Если я попытаюсь отправить запрос на контроллер веб-API, я получу сообщение об ошибке в веб-браузере: «В запрошенном ресурсе отсутствует заголовок« Access-Control-Allow-Origin ». Следовательно, исходный код« null »не имеет доступа. Ответ имеет HTTP-код состояния 500».

Вот мой запрос на пост jquery:

$.ajax({
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json'
            },
            type: "POST",
            url: "http://localhost:12345/api/xs/" + selectedId,
            data: JSON.stringify(anyObj),
            dataType: "json"
        });

и вот (web api) контроллер:

    [Route("api/[controller]")]
    public class XSController : Controller
    {
        [HttpPost("{id}")]
        [EnableCors("AllowAll")]
        //[DisableCors()]
        public async Task<IActionResult> Post(ushort id, [FromBody]AnyObjVM model)
        {
        }
    }

и файл startup.cs:

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options =>
    {
        options.AddPolicy("AllowAll",
              builder =>
              {
                  builder.AllowAnyOrigin()
                         .AllowAnyHeader()
                         .AllowAnyMethod()
                         .AllowCredentials()
                         ;
              });
    });
}

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); }

        app.UseDefaultFiles();
        app.UseStaticFiles();
        app.UseCors("AllowAll");
        app.UseMvc();
    }

Заголовок запроса:

Accept: application/json
Accept-Encoding: gzip, deflate, br
Accept-Language: pl-PL,pl;q=0.9,en-US;q=0.8,en;q=0.7
Connection: keep-alive
Content-Length: 166
Content-Type: application/json
Host: localhost:12345
Origin: null
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36

Я попытался включить / отключить CORS в файле startup.cs и в методе контроллера. WebAPI работает на моем локальном компьютере в IIS Express. Сайт, который вызывает веб-API, также находится на моем локальном компьютере - я запускаю сайт вручную (нажмите на файл сайта), поэтому для origin задано значение null. Обычно я могу вызывать методы веб-API, иногда нет . Я также попытался запустить Chrome с опцией --disable-web-security (опционально с --user-data-dir = "d: / temp_chrome"), но это ничего не изменило.

Как мне решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...