Asp. Net MVC CORS включен в Web API, но заголовки больше не отправляются - PullRequest
1 голос
/ 13 марта 2020

У меня есть два Do tNet MVC сайтов. Один обращается к веб-API другого с помощью вызова AJAX GET.

Все это работало, но теперь перестало работать. Я едва сделал какие-либо изменения на моей стороне, поэтому мне интересно, если бы мой хост мог внести изменения (например, в IIS), которые бы мешали этому работать?

Вот как я изначально заставил это работать ...

Я установил пакеты Microsoft.As pnet .Cors и Microsoft.As pnet .WebApi.Cors.

Я добавил следующий код ...

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.EnableCors();

И в контроллере для моего API я добавил ...

namespace Webscope.Controllers
{
    [EnableCors(origins: "[URL of my other website]", headers: "*", methods: "*")]      
    public class EventAPIController : ApiController 

Раньше это работало, но теперь получаю следующую ошибку в консоли:

Перекрестный запрос заблокирован: та же политика происхождения запрещает чтение удаленного ресурса по адресу https: [URL моего сайта] / EventRead / 1-1-2015 / 12-12-2099. (Причина: отсутствует заголовок CORS 'Access-Control-Allow-Origin'.)

В ответ на ответ @ FoggyDay ниже я вызвал API из Fiddler и получил следующие заголовки ...

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Frame-Options: AllowAll
X-Powered-By: ASP.NET
Date: Fri, 13 Mar 2020 03:56:39 GMT
Content-Length: 198

Похоже, заголовки CORS не были включены в ответ. Может кто-нибудь сказать мне, почему это будет?

ОБНОВЛЕНИЕ

Я нашел какой-то посторонний код из предыдущей попытки заставить CORS работать. Теперь, когда я удалил этот код, я вижу заголовки CORS в Fiddler.

Access-Control-Allow-Headers: *
Access-Control-Allow-Methods: *
Access-Control-Allow-Origin: https://[ calling website's URL ]/

Однако я все еще получаю следующую ошибку в консоли моего вызывающего сайта ...

Доступ к XMLHttpRequest по адресу https: // [ URL-адрес конечного сайта] / api / EventRead / 1-1-2015 / 12-12-2099 «из источника» [URL вызывающего веб-сайта] 'имеет был заблокирован политикой CORS: Ответ на запрос предварительной проверки не прошел проверку контроля доступа: На запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».

1 Ответ

2 голосов
/ 13 марта 2020

ПРЕДЛОЖЕНИЯ:

  1. Отмените ваши "новые" изменения. Похоже, вы случайно ввели второй заголовок.

  2. Читать это: Причина: отсутствует заголовок CORS 'Access-Control-Allow-Origin'

  3. Посмотрите на ваш HTTP-трафик c, например, в Fiddler . Убедитесь, что вы отправляете заголовок ... и убедитесь, что вы разрешаете правильную комбинацию хоста и порта.

  4. Если проблемы все еще возникают, отправьте сообщение с точное сообщение об ошибке и соответствующие заголовки HTTP.

...