CORS在Chrome中工作但在FF中失败

时间:2014-01-30 14:28:39

标签: javascript ajax cors

考虑以下情况:
从浏览器访问简单页面(http://firstdomain.com/test.html)。 该页面包含一个按钮,单击该按钮(httpsTest())将ajax请求发送到另一个域和不同协议(https://seconddomain.com/picture.png)的页面。

    var createCORSRequest = function(method, url) {
      var xhr = new XMLHttpRequest();
      if ("withCredentials" in xhr) {
        xhr.withCredentials = true;
        xhr.open(method, url, true);
      } else if (typeof XDomainRequest != "undefined") {
        // IE8 & IE9
        xhr = new XDomainRequest();
        xhr.open(method, url);
      } else {
        // CORS not supported.
        xhr = null;
      }
      return xhr;
    };

    function httpsTest() {
        var url = 'https://user:password@seconddomain.com/picture.png';
        var method = 'GET';
        var xhr = createCORSRequest(method, url);

        if (xhr) {
          xhr.onload = function() {
            alert('Nice job');
          };

          xhr.onerror = function() {
            alert('Something went wrong!');
          };

          xhr.send();
        } 
    }

以上在Chrome中效果很好(第32节),但在FF(第26节 - 最新版本)中失败并出现错误:
   NS_ERROR_DOM_BAD_URI:访问受限制的URI被拒绝

请注意:
1.我使用带有OpenSSL配置的Apache 2.2生成了第二个域的自签名证书 2.激活基本认证
3.在Apache配置中添加了以下CORS响应头:

Header set Access-Control-Allow-Origin "http://firstdomain.com"
Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
Header set Access-Control-Allow-Headers "*"
Header set Access-Control-Max-Age "3600"
Header set Access-Control-Allow-Credentials "true"

是否还有其他人遇到此问题?

感谢。

0 个答案:

没有答案