【问题标题】:Cross Origin 4xx errors response is blockedCross Origin 4xx 错误响应被阻止
【发布时间】:2011-03-23 14:33:37
【问题描述】:

我正在使用 XMLHttpRequest level2 进行跨源请求。 问题是如果服务器返回错误代码,例如 409,浏览器不允许我访问服务器返回的响应文本。 因此,如果服务器返回 409 并显示以下消息:“你不能再这样做了” 我只在客户端得到 409 但 xhr.responseText 是空的...

这是规范的一部分还是我缺少标题或其他东西?

【问题讨论】:

    标签: xmlhttprequest cross-domain


    【解决方案1】:

    为了补充 monsur 所说的,规范对这个特定用例并不完全清楚,但如果你看一下第 7.3 节。处理跨域请求状态,它指示实现者“确保不泄露有关请求的任何进一步信息”以应对各种错误。尽管这可能看起来过于保守,但您也可以争辩说这是一种良好/安全的最佳实践。见:http://www.w3.org/TR/cors/#cors-api-specification-response

    【讨论】:

      【解决方案2】:

      我相信这是由于浏览器对 CORS 的实施过于保守。我什至注意到在 Safari 中抛出错误时 statusCode 为 0,而不是实际的 HTTP 状态。在浏览器完善 onError 案例之前,我认为您无能为力。如果您可以控制服务器,则始终可以返回 HTTP 状态 200,然后将错误代码放在正文中。如果您想使用更标准的东西,JSON-RPC (http://json-rpc.org/) 会这样做。

      【讨论】:

        猜你喜欢
        • 2021-10-30
        • 1970-01-01
        • 1970-01-01
        • 2021-08-06
        • 2020-11-09
        • 2020-02-27
        • 2022-12-10
        • 2021-06-29
        • 1970-01-01
        相关资源
        最近更新 更多