为什么 php slim headers 已经串联了?
Why php slim headers are already concatenated?
我需要将一些 header 放在 HttpUrlConnection
中,以便使用 Slim 框架(版本 3)将它们发送到用 PHP 编写的 Web 服务器。
当我在连接中放置更多具有相同密钥的 header 时,我遇到了麻烦。
例如:
HttpUrlConnection conn = createConnectionSomeHow();
conn.addRequestProperty("myHeader", "value1");
conn.addRequestProperty("myHeader", "value2");
如果我在 conn.getRequestProperties()
上使用 watch,我会看到一个带有键 "myHeader"
的单个 header 和一个包含 2 个元素的列表作为价值。如我所愿
但是我的网络服务器接收效果不佳header。
如果我写:
$values = $request->getHeader('myHeader');
$values
不是包含 2 个元素的列表,它是包含值 "value1, value2"
的 1 个元素的列表,也就是说,2 个值连接在一个字符串中。
这真的很奇怪。我从 Slim documentation:
You can get a single header’s value(s) with the PSR 7 Request object’s
getHeader($name) method. This returns an array of values for the given
header name. Remember, a single HTTP header may have more than one
value!
有一种方法可以自动连接 header 的值,称为 getHeaderLine
。我不是在打电话。我打电话给 getHeader
.
这种行为是否正确?我是不是弄错了什么?
收获不错。这实际上是一个错误。
我为此创建了一个 issue at the Slim Github project。
作为解决方法,您可以自己拆分 header:
$values = explode(',', $request->getHeaderLine('myHeader'));
我需要将一些 header 放在 HttpUrlConnection
中,以便使用 Slim 框架(版本 3)将它们发送到用 PHP 编写的 Web 服务器。
当我在连接中放置更多具有相同密钥的 header 时,我遇到了麻烦。 例如:
HttpUrlConnection conn = createConnectionSomeHow();
conn.addRequestProperty("myHeader", "value1");
conn.addRequestProperty("myHeader", "value2");
如果我在 conn.getRequestProperties()
上使用 watch,我会看到一个带有键 "myHeader"
的单个 header 和一个包含 2 个元素的列表作为价值。如我所愿
但是我的网络服务器接收效果不佳header。
如果我写:
$values = $request->getHeader('myHeader');
$values
不是包含 2 个元素的列表,它是包含值 "value1, value2"
的 1 个元素的列表,也就是说,2 个值连接在一个字符串中。
这真的很奇怪。我从 Slim documentation:
You can get a single header’s value(s) with the PSR 7 Request object’s getHeader($name) method. This returns an array of values for the given header name. Remember, a single HTTP header may have more than one value!
有一种方法可以自动连接 header 的值,称为 getHeaderLine
。我不是在打电话。我打电话给 getHeader
.
这种行为是否正确?我是不是弄错了什么?
收获不错。这实际上是一个错误。
我为此创建了一个 issue at the Slim Github project。
作为解决方法,您可以自己拆分 header:
$values = explode(',', $request->getHeaderLine('myHeader'));