【问题标题】:MS Edge handles 401 errors thus bypassing my error handlerMS Edge 处理 401 错误,从而绕过了我的错误处理程序
【发布时间】:2017-08-07 22:26:22
【问题描述】:

我有代码可以在 javascript 中对我的网络服务进行 ajax 调用,如下所示:

    $.ajax(
        {
            url: url,
            data: json,
            type: "POST",
            processData: false,
            contentType: "application/json",
            timeout: 10000,
            dataType: "text",
            global: false,
            success: function (result, jqXHR)
            {
                sccParams = {
                    result: result,
                    jqXHR: jqXHR,
                }
                successResult(sccParams)
            },
            error: function (jqXHR, textStatus, errorThrown)
            {
                errParams = {
                    jqXHR: jqXHR,
                    textStatus: textStatus,
                    errorThrown: errorThrown,
                }
                errorHandler(errParams);
            }
        });

这可以正常工作,除非 MS Edge 中出现 401 错误。在这种情况下,我可以看到 Ajax 调用被触发,但看起来 MS Edge 跳入并处理了错误,并且没有调用我的成功或错误函数。我的 errorHandler 有处理 401 错误的代码,但这永远不会运行,而是我在控制台日志中看到以下内容:

HTTP401: DENIED - The requested resource requires user authentication.
(XHR)POST - https://www.mywebsite.co.uk/WebService.svc/MyWebServiceRoutine

我的网络服务托管在 azure 中并使用 aspnet_Membership。

如何让 MS Edge 退出并让我自己处理错误?其他浏览器工作正常。

【问题讨论】:

    标签: javascript ajax asp.net-membership microsoft-edge http-status-codes


    【解决方案1】:

    原因似乎是,为了检查互联网连接,我的代码调用了一个 http 站点。因为我的网站是一个 https 网站,MS Edge 认为这种行为是可疑的。因此,每当我随后尝试访问我的 Web 服务时,MS Edge 都会介入并拒绝我的站点访问。

    我已将对 http 站点的调用替换为对 https 站点的调用,现在一切正常。

    【讨论】:

      猜你喜欢
      • 2016-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-11
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      • 2019-05-08
      相关资源
      最近更新 更多