为什么php slim标题已经连接好了?

时间:2017-03-01 12:17:26

标签: java php header httpurlconnection slim

我需要在HttpUrlConnection中添加一些标题,以便使用Slim框架(版本3)将它们发送到用PHP编写的Web服务器。

当我在连接中添加更多带有相同密钥的标头时,我遇到了麻烦。 例如:

HttpUrlConnection conn = createConnectionSomeHow();
conn.addRequestProperty("myHeader", "value1");
conn.addRequestProperty("myHeader", "value2");

如果我在conn.getRequestProperties()上使用观看,我会看到一个包含密钥"myHeader"的标头和一个包含2个元素的列表作为值。就像我想要的那样。

但我的网络服务器收不到这个标题。

如果我写:

$values = $request->getHeader('myHeader');

$values不是2个元素的列表,它是包含值"value1, value2"的1个元素的列表,也就是说,在单个字符串中连接的2个值。 这真的很奇怪。我读了Slim documentation

  

您可以使用PSR 7 Request对象获取单个标头的值   getHeader($ name)方法。这将返回给定的值数组   标题名称。请记住,单个HTTP标头可能有多个   值!

有一种方法可以自动连接标题的值,它被称为getHeaderLine。我不是在说它。我打电话给getHeader

这种行为是否正确?我错了吗?

1 个答案:

答案 0 :(得分:1)

好抓。这实际上是一个错误。

我为此创建了issue at the Slim Github project

作为解决方法,您可以自行拆分标题:

$values = explode(',', $request->getHeaderLine('myHeader'));