CORS заблокировал доступ, даже если локальный адрес разрешен на стороне сервера

У меня есть страница Angular, использующая сервер ASP.NET на платформе Entity Framework. Приложения Angular и ASP.NET работают по разным локальным адресам. Чтобы предотвратить ошибки CORS, я настроил некоторые параметры на стороне сервера.

На стороне ASP.NET, в WebApiConfig.cs я включил все разрешения на доступ с локального адреса Angular с этим;

config.EnableCors(new EnableCorsAttribute("http://localhost:4200", headers: "*", methods: "*"));

Однако, когда я пытаюсь отредактировать значение со страницы Angular, у меня все еще возникает ошибка CORS.

Access to XMLHttpRequest at 'http://localhost:62677/Assets/Edit/177738ba-16cd-4b08-b339-974f0547e626' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.

Вставка нового значения в базу данных или получение всех значений из базы данных работает без ошибки CORS, но редактирование существующего значения дает ошибку.

Я попытался добавить точку останова в приведенном выше коде в WebApiConfig.cs и отладить его, однако строка кода не была достигнута.

Любая помощь приветствуется, спасибо

Дополнение: Также у меня есть следующие конфигурации в моем файле Web.config ;

  <add name="Access-Control-Allow-Origin" value="*" />
  <add name="Access-Control-Allow-Headers" value="Content-Type" />
  <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />

Новая ОШИБКА после внедрения решения Shyam Vemula:

Access to XMLHttpRequest at 'http://localhost:62677/Assets/Edit/177738ba-16cd-4b08-b339-974f0547e626' from origin 'http://localhost:4200' has been blocked by CORS policy: Method PUT is not allowed by Access-Control-Allow-Methods in preflight response.

Всего 1 ответ


Попробуй это. Добавьте следующее в Global.asmx

void Application_BeginRequest(object sender, EventArgs e)
{
    var context = HttpContext.Current;
    var response = context.Response;

    // enable CORS
    response.AddHeader("Access-Control-Allow-Origin", "*");

    if (context.Request.HttpMethod == "OPTIONS")
    {
        response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, OPTIONS");
        response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
        response.End();
    }
}

и удалите это из файла Web.config

<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />

Есть идеи?

10000