Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax CORS请求在Firefox中中止,而不是在Chrome或IE中_Ajax_Apache_Cors - Fatal编程技术网

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

Ajax CORS请求在Firefox中中止,而不是在Chrome或IE中,ajax,apache,cors,Ajax,Apache,Cors,我正在使用jQuery发出跨域ajax请求。这个请求在Chrome甚至IE中都能正常工作。但在Firefox中,飞行前选项总是被Firefox中止。此请求的目标服务器是Apache,并且在httpd-vhosts.conf中启用了CORS 更令人沮丧的是Firefox的第一个请求失败了。随后使用F5刷新-ajax调用有时会完成。在Firebug中-我没有看到飞行前的选项请求。我花了太长时间试图解决这个问题-非常感谢任何帮助 <VirtualHost *:8443> Serve

我正在使用jQuery发出跨域ajax请求。这个请求在Chrome甚至IE中都能正常工作。但在Firefox中,飞行前选项总是被Firefox中止。此请求的目标服务器是Apache,并且在httpd-vhosts.conf中启用了CORS

更令人沮丧的是Firefox的第一个请求失败了。随后使用F5刷新-ajax调用有时会完成。在Firebug中-我没有看到飞行前的选项请求。我花了太长时间试图解决这个问题-非常感谢任何帮助

<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>

服务器名cyrsggisprd01.sgaas.gi-mss.com
SSLVERIFYCLENT无
WSGIScriptAlias/svm\u服务器D:\Apache24\htdocs\svm\u服务器\adapter.wsgi
标题始终设置访问控制允许原点“*”
标头始终设置访问控制允许方法“POST、GET、OPTIONS”
标头始终设置访问控制最大期限“1000”
Header始终设置访问控制允许标头“x-requested-with、内容类型、来源、授权、接受、客户端安全令牌、会话”
重新启动发动机
重写cond%{REQUEST_METHOD}选项
重写规则。*/[R=200,L]
要求所有授权
斯伦金安
SSLCertificateFile D:\Apache24\ssl\server.crt
SSLCertificateKey文件D:\Apache24\ssl\server.key

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

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


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

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