firefox - 使用 HTML5 进行跨源资源共享的问题

标签 firefox html webkit xmlhttprequest cross-domain

我是这个网站的新手,已经成功使用“HTML5”跨源资源共享 (CORS) 将数据发布到我的服务器。我最近刚刚尝试将 GET 包含在其中,因为我们正试图让我们所有的通信都不依赖于 JavaScript 库。在这样做的过程中,我遇到了一个奇怪的问题,这个问题对于 Firefox 来说似乎可以解决,但在所有 WebKit 浏览器中仍然存在问题。基本上任何返回 <200 或 >300 状态的东西都只是作为 0 状态进入。这使得几乎不可能进行错误处理。

对于 Firefox,我可以在请求的末尾放置一个随机字符串以防止它被缓存;从而至少修复了 304s。然而,这在 Chrome/Safari 中对我来说根本不起作用。这是我的代码示例:

xhr_request: function(type,url, data, callbacks, form){
    var form = (typeof(form)!=="undefined")?form:null;
    var xhr = new XMLHttpRequest();
    var response;
    data = com.ticommunity.obj_to_string(data);
    xhr.open(type, url, true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.setRequestHeader("X-TxId", com.ticommunity.keyGen());
    xhr.withCredentials = true;
    xhr.send(data);
    xhr.onreadystatechange = function(){
        if(xhr.readyState == 4){
            if(xhr.status == 200){
                response = xhr.responseText;
                com.ticommunity.comm.request_callback(response, callbacks, form);
            }else{`//****this is where the 0 Status keeps coming up***`
                response = xhr.status;
                com.ticommunity.comm.request_callback(response, callbacks, form);
            }
        }
    }
}

有没有其他人遇到过类似的事情并提出了解决方法?我只是在做一些愚蠢的事情吗?非常感谢任何帮助。

编辑:我意识到 0 是根据规范应该发生的情况,但我真的需要能够捕获这些情况并进行一些其他处理。

最佳答案

我还没有具体看到这个问题,但我想知道您是否会使用不同的 xhr 事件(例如 xhr.onload)来获得更好的运气。您可以相信 onload 会在成功响应时触发,因此无需检查 xhr.status。如果您需要陷阱,这里有一个完整的事件列表:

http://www.w3.org/TR/XMLHttpRequest2/#events

关于firefox - 使用 HTML5 进行跨源资源共享的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3440371/

相关文章:

objective-c - cocoa WebView SWF

c# - 使用 WebKit.NET 从 JavaScript 调用 C# 函数

css - 为什么文本缩进在其容器具有 :before/:after pseudo-element? 时不起作用(FX/Opera)

html - 在 Flexbox 中保持 div 的纵横比似乎在 Firefox 中不起作用

html - 背景容器匹配内层高度

php - 将 3 个盒子排成一行

JavaScript 错误,战舰游戏

html - 在 Chrome 中悬停时,CSS div 无法正常工作

javascript - 强制 HTTP 请求在浏览器中失败

html - 我正在尝试将 webkit 命令转换为 moz o 和 ms