CORS заблокировал доступ, даже если локальный адрес разрешен на стороне сервера - PullRequest
0 голосов
/ 17 мая 2019

У меня есть страница 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" />

Новая ОШИБКА после внедрения решения Шьяма Вемулы:

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 Ответ

1 голос
/ 17 мая 2019

Попробуйте это.Добавьте следующее в 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" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...