我对特定于Content-Type的供应商感到困惑。默认情况下说,
Content-Type: application/json
但是根据供应商特定类型,我可以拥有此
Content-Type: application/vnd.anything.process-v1+json
如果我要检查Content-Type是否不是供应商特定的,我是否需要在PHP中使用任何特殊功能?
感谢。
答案 0 :(得分:1)
如果您通过HTTP POST从客户端接受内容,则可以使用$ _SERVER ['CONTENT_TYPE']检查内容类型。我建议您在Content-Type标头中使用@ver属性,而不是嵌入供应商内容类型名称中。例如:
Content-Type: application/vnd.anything.process+json;ver=1
如果要通过HTTP POST将内容发送到服务器,则需要指定一个接受标头,以告知客户端返回特定于供应商的内容类型中的数据。像这样的东西会起作用:
header('Accept: application/vnd.anything.process+json;ver=1');
接受标题可能非常复杂。如果您不控制要作为客户端发布的服务器,则应为Accept标头提供合理的默认值。如果您希望服务器在不了解供应商标题的情况下发回普通JSON,那么这样的事情会更友好:
header('Accept: application/vnd.anything.process+json;ver=1;q=0.9, application/json;q=0.1');
最宽松的Accept标头接受任何东西:
header('Accept: application/vnd.anything.process+json;ver=1;q=0.9, application/json;q=0.5, */*;q=0.1');
以下是Accept标头的实际RFC:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html