Apache 标头 Content-Type 供应商特定类型/json

问题描述 投票:0回答:1

我对特定于内容类型供应商的内容感到非常困惑。说默认,

Content-Type: application/json

但是对于供应商特定类型,我可以拥有这个

Content-Type: application/vnd.anything.process-v1+json

如果我要检查 Content-Type 是否不是特定于供应商的,我是否需要在 PHP 中执行任何特殊函数才能使用?

php rest apache http-headers
1个回答
2
投票

如果您通过 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

© www.soinside.com 2019 - 2024. All rights reserved.