Включить предполетную проверку CORS ASP.NET в IIS

#asp.net #iis #cors #preflight

#asp.net #iis #cors #предполетная проверка

Вопрос:

У меня есть двоичные файлы только для ASP.NET приложение, и я пытаюсь вывести его на свой местный. У меня возникли некоторые проблемы с CORS при попытке поднять его.

 Access to XMLHttpRequest at 'http://xx.xx.xx.xx:8080/webapi/' from origin 
'http://xx.xx.xx.xx:8089' has been blocked by CORS policy: 
Response to preflight request doesn't pass access control check: 
No 'Access-Control-Allow-Origin' header is present on the requested resource.
 

Я попробовал несколько вещей, включая установку модуля CORS в IIS отсюда https://www.iis.net/downloads/microsoft/iis-cors-module

Я также попытался изменить свой Web.Config, чтобы добавить следующее. Все, что я пытаюсь сделать, это просто заставить его работать для начала, поэтому я хочу разрешить прохождение всех запросов.

 <system.webServer>
  <cors enabled="true">
    <add origin="*" allowed="true" />
    <add origin="http://*" allowed="true" />
  </cors>
 

но я все равно получаю ту же ошибку. Странно то, что и webapi, и ASP.NET клиент находится на одном компьютере на разных портах 8080 и 8089.

Комментарии:

1. Привет, проблема решена? Если вы считаете, что мой ответ полезен для вас, вы можете пометить его как ответ.

2. Привет всем, нет, проблема не была решена. Я все еще пытаюсь кое-что сделать, чтобы понять, как я могу это исправить.

3. Разве это не может быть решено с помощью глобального файла?

Ответ №1:

Сначала вы должны убедиться, что вы успешно установили модуль cors, затем вам нужно добавить следующую конфигурацию в web.config приложения:

  <system.webServer> 
   <cors enabled="true">
    <add origin="*" allowed="true" />
  </cors>
  </system.webServer>
 

Этот узел конфигурации находится под узлом конфигурации.

Если проблема все еще не решена, вы также можете решить междоменную проблему, добавив следующий код в глобальный файл:

 protected void Application_BeginRequest(object sender, EventArgs e)
        {
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");

            if (HttpContext.Current.Request.HttpMethod == "OPTIONS")

            {
                HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "*");

                HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "*");

                HttpContext.Current.Response.End();
            }

        }