我一直无法在HTTP规范中找到任何文档来管理生成HTTP响应是否可接受包括人类可读的错误消息(例如content-type:text / plain)如果HTTP客户端无效HTTP请求,并指定了一个请求标头,使用accept标头限制可接受的响应内容类型。
想象一下,REST Web服务客户端向“http:// myhost / validpath?illegalRequestParameter = rubbish”发出无效的GET请求,并包含请求标头“Accept:application / xml”或“Accept:application / vnd.ms” -excel”。
服务器将使用4XX系列中的HTTP状态代码进行响应(在本例中为“400 Bad Request”)。但是,该服务如何能够向客户传达有关错误原因的信息?
我看到以下选项:
在HTTP响应内容中创建明文错误消息。 设置响应标头“Content-type:text / plain”,并在响应内容中包含描述性错误消息。但是,这会破坏HTTP客户端的“接受”限制。
不要包含HTTP响应内容。 这显然是有效的,但对于只知道发生“客户端错误”但无法知道原因(并在客户端日志文件中报告原因)的客户端没有太大帮助。
尝试将错误消息强制转换为“可接受”的MIME类型。 这很难实现。即使错误消息可以构造为有效的application / xml类型,也可能会破坏Web服务合同(例如XML Schema一致性)。
我的问题是:上述情况是否受现有HTTP规范/标准的约束?
参考文献:
答案 0 :(得分:0)
如果接受标头是' application / xml',那么您应该将错误消息作为xml返回。它会破坏客户端,但这并不重要,客户端无法获得他们请求的信息。至少客户端能够解析错误消息......