У меня есть два 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».