【问题标题】:CORS Request Aborted in Firefox, not in Chrome or IECORS 请求在 Firefox 中中止,而不是在 Chrome 或 IE 中
【发布时间】:2015-11-19 17:35:28
【问题描述】:

我正在使用 jQuery 进行跨域 ajax 请求。此请求在 Chrome 甚至 IE 中都可以正常工作。但是在 Firefox 中,预检 OPTIONS 总是被 Firefox 中止。此请求的目标服务器是 Apache,并且在 httpd-vhosts.conf 中启用了 CORS

更令人沮丧的是,Firefox 发出的第一个请求失败了。使用 F5 进行后续刷新 - ajax 调用 sometimes 完成。在 Firebug 中 - 我没有看到预检 OPTIONS 请求。我花了太长时间试图解决这个问题 - 非常感谢任何帮助。

<VirtualHost *:8443>
    ServerName cyrsggisprd01.sgaas.gi-mss.com
    SSLVerifyClient none
    WSGIScriptAlias /svm_server D:\Apache24\htdocs\svm_server\adapter.wsgi
    <Directory D:\Apache24\htdocs\svm_server>
        Header always set Access-Control-Allow-Origin "*"
        Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS"
        Header always set Access-Control-Max-Age "1000"
        Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token, session"

        RewriteEngine On
        RewriteCond %{REQUEST_METHOD} OPTIONS
        RewriteRule .* / [R=200,L]

        Require all granted
    </Directory>

    SSLEngine On
    SSLCertificateFile D:\Apache24\ssl\server.crt
    SSLCertificateKeyFile D:\Apache24\ssl\server.key
</VirtualHost>

【问题讨论】:

  • 您需要提供更多信息。比如你提出什么样的要求。

标签: ajax apache cors


【解决方案1】:

我意识到这是一个老问题,但我有一个非常相似的问题,涉及 IIS 而不是 Apache 的不同设置,但我设法弄明白了。核心问题是 CORS、SSL 和不受信任的证书。

在我的例子中,CORS 客户端(它是一个从其自己的 URL 提供的 SPA)和服务器具有不受信任的证书,但是在 Firefox 中为客户端设置了一个例外,而不是服务器。这意味着 Firefox 成功加载了 SPA,但是 SPA 向服务器发出的任何 CORS 请求都在飞行前阶段被简单地中止,没有进一步的解释。我相信(但我尚未确认)Edge 会执行类似的操作,但出现以下错误:“网络错误 0x80070005,访问被拒绝”。

因此,基本上,请仔细检查您的服务器是否具有有效证书,并将您需要的任何例外添加到您的浏览器中。我在 Firefox 中所要做的就是手动访问服务器 URL 并添加一个异常,这样问题就消失了。这个简单的步骤很容易被忽略(尤其是在设置新的开发环境时),并且由于生成的错误消息具有误导性,因此调试起来非常令人沮丧。

【讨论】:

    猜你喜欢
    • 2015-09-01
    • 2016-02-05
    • 2015-08-23
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 2019-08-11
    • 2014-09-03
    • 2018-04-06
    相关资源
    最近更新 更多