2011-03-18 112 views
1

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

这是一部分规范或我错过了一个头或什么?

回答

2

为了补充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/)会这样做。

相关问题