如果我使用:
xhr.setRequestHeader("Content-Type", "application/json");
我是否也被迫收到json
回复?或者我可以收到html
回复?
如果我能收到任何我想要的格式,那么动态管理这两个方面的最佳方法是什么:
Accept
标头例如我的函数应该设置:
xhr.setRequestHeader('Accept', "application/json");
如果它等待json响应,但也对响应进行json解析,但是如果它是html响应,则不需要这样的事情。
那么有没有办法动态管理响应处理?
答案 0 :(得分:0)
实际上,content-type是您要发送到服务器的数据类型。另一方面,数据类型或您提到的接受用于与服务器协商您期望的数据类型。因此,作为客户端,您可以请求多种数据类型,例如
httpRequest.setRequestHeader('Accept', 'application/json, text/xml');
但是您有责任处理您在客户端解析的数据类型。在服务器端,服务器在协商期间决定生成所需的数据类型,如xml,json,html等。
所以最后你只是对你要求的数据格式负责。如果你请求json,那么服务器响应数据可能是json而不是xml,但你必须记住它取决于服务器端它有哪种数据类型选择,大多数时候它的json或xml(将知道数据交换为fromat)然后你不必请求html,这种机制称为内容协商
答案 1 :(得分:0)
我是否也被迫接受json回复?
没有。您发送的数据格式和收到的数据格式无关。
或者我可以收到HTML回复?
你可以。
我将解析响应的方式(解析json与否)
阅读Content-Type
响应标头并使用它来确定数据的格式。
使用哪个Accept标头
要求您提供以下数据格式: