代码之家  ›  专栏  ›  技术社区  ›  greim Claiohm

是否可以区分网络错误和交叉源错误?

  •  0
  • greim Claiohm  · 技术社区  · 14 年前

    http://www.w3.org/TR/access-control/

    阅读上面链接的cors规范,似乎无法可靠地区分一般的“网络错误”和拒绝跨源访问的错误。从规范:

    如果存在网络错误,请应用网络错误步骤。

    执行资源共享检查。如果返回fail,则应用网络错误步骤。

    http://www.w3.org/TR/access-control/#simple-cross-origin-request0

    在我的测试中,我找不到firefox实现的任何功能,这些功能似乎表明资源共享检查肯定失败了。它只是将readyState切换到4并将status设置为0。

    最后,我希望能够将成功回调、一般失败回调和可选的跨源失败回调传递给我的函数。谢谢你的帮助和洞察力。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Justin Johnson    14 年前

    您可能不需要发出xhr请求来知道何时会发生交叉源错误。根据jquery的 $.get 以下内容:

    var xhr = {
        get: function(url, data, callback, dataType) {
            if ( !this.isSameOrigin(url) ) {
                callback(null, "Same-origin error or whatever", null);
            }
    
            $.get(url, data, callback, dataType);
        },
    
        isSameOrigin: function(url) {
            // Do a string comparison against window.location.  Get as complicated 
            // as you'd like
            return !!(
                // Url doesn't contain a valid protocol (relative to domain))
                !url.match(/^https?:\/\//i) || 
                // Url contains a protocol but the request is to the current domain
                url.match(new RegExp("^https?://" + window.location.host, "i"))
            );
        }
    };