CORS请求在Firefox中中止,而不是在Chrome或IE中

时间:2015-08-25 20:47:18

标签: ajax apache cors

我正在使用jQuery创建跨域ajax请求。这个请求在Chrome,甚至是IE中运行良好。但在Firefox中,预检OPTIONS总是被Firefox中止。此请求的目标服务器是Apache,并在httpd-vhosts.conf

中启用了CORS

令人沮丧的是,Firefox发出的第一个请求失败了。随后使用F5刷新 - ajax调用有时完成。在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>

1 个答案:

答案 0 :(得分:3)

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

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

因此,基本上,仔细检查以查看您的服务器是否具有有效证书,并将所需的任何例外添加到浏览器中。我在Firefox中所做的只是手动访问服务器URL并添加异常,这使得问题消失了。这个简单的步骤非常容易被忽视(特别是在设置新的开发环境时),调试非常令人沮丧,因为生成的错误消息具有误导性。