Edge on Windows 10 32-битная блокировка ajax-вызова на localhost с сетевой ошибкой 0x2efd

У нас есть приложение, которое использует SignalR, чтобы поговорить с драйверами сканера локально, которые уже несколько лет работают в IE, Chrome и Firefox, которые не имеют проблемы с вытаскиванием заголовков js для файла SignalR. Как только Edge вышел, мы увидели проблему с разговором с localhost и после долгих усилий найти параметр, позволяющий ему общаться (и много часов с билетом Microsoft, что они не нашли решения), мы решили добавить заголовки, чтобы позволить Edge предоставить доступ к домену:

Access-Control-Allow-Origin: https://localhost:11000

Казалось, это сработало, но мы не заметили, что он работал на 64-битной Windows 10 Edge, но не на 32-битной Windows 10 Edge. Я потратил часы, понижая все настройки безопасности для всех зон и отключая Защищенный режим, пытаясь использовать различные трюки ajax, чтобы вытащить файл, но продолжайте получать ошибку:

SCRIPT7002: XMLHttpRequest: Network Error 0x2efd, Could not complete the operation due to error 00002efd.

Сбой следующего псевдокода:

$.ajax({
    url: "https://localhost:11000/signalr/hubs",
    crossDomain: true,
    success: function (data) {
        console.log("success");
    },
    error: function (jqXHR, textStatus, errorThrown) {
        console.log("error:");
        console.log(jqXHR);
    }
});

Я ищу любое представление об установках или что-то еще, чтобы попытаться, или если кто-то еще видел эту проблему. Еще одна часть информации, скрипач не показывает трафик для вызова, поэтому он блокируется браузером. Также на том же компьютере, который не работает с Edge-IE, Chrome и FF преуспеют.

Ответы

Ответ 1

В вашем запросе отсутствуют следующие атрибуты, добавление которых должно решить проблему.

  • Метод запроса: GET, POST и т.д.
  • Запросить тип содержимого (заголовок): application/json и т.д.
  • Запрос типа данных (заголовок): json, XML и т.д.

Также просмотрите следующий фрагмент кода:

type:"POST",
contentType:"application/json; charset=utf-8",
dataType:"json"

Ответ 2

Попробуйте в режиме совместимости IE, перейдя в dev-инструменты и выбрав из верхнего раскрывающегося списка, если ошибка все еще происходит с этим, скорее всего, это некоторые системные файлы Windows, которые использует IE. Использует ли этот вызов аутентификацию с сертификатами? Может быть, сертификат устарел или Edge использует другой метод проверки подлинности? Проверьте вкладку источников в IE (как совместимую, так и несовместимую), чтобы узнать, загружен ли ресурс, поскольку Fiddler только фиксирует трафик HTTP и HTTPS. Это должно указывать вам в правильном направлении в отношении ошибок и т.д. Наконец, возможно, просто введите код приложения С#, который делает запрос на тот же URL-адрес, возможно, что в новой версии .NET используются те же зависимости, которые могут нарушить ваши вызов. Если это так, С# даст вам достаточно описательной ошибки, чтобы исправить проблему.

Ответ 3

У меня была такая же проблема. В то время как Ajax вызывает страницу в том же домене, работая в любом другом браузере, в Edge они не будут. Открытие URL-адреса, используемого для вызова Ajax на другой вкладке, даст правильные результаты. Добавление части кода на страницу, обслуживающую вызовы Ajax, фиксировало ее как-то... Код находится на С#, но, возможно, это даст общее представление о том, как исправить это на других языках.

    if (Request.UserHostName == "127.0.0.1")
        Response.AppendHeader("Access-Control-Allow-Origin", "*");

Ответ 4

вы можете попробовать это.

    $.ajax({
        url:url,
        type:"POST",
        data:data,
        contentType:"application/json; charset=utf-8",
        dataType:"json",
        success: function(){
        //
        }
    });

и обязательно укажите параметры, тип содержимого, тип данных, responseCode..etc