我需要知道如何获取自定义PHP标头URL值

时间:2019-05-22 23:46:15

标签: php http-headers

编辑........

这不是发布的问题。 @ miken32更改了上下文,谢谢。看来这样做是为了使同一个人可以说这是“相似”问题的重复,但事实并非如此。合理的做法是,在尝试进行B部分之前,先确保正确地执行A部分,这也可能导致C部分。

建议的“ duplicte”不包含完整的答案,就像我最初在原始帖子中表达的相同问题一样。已经被编辑死了。没有一个示例显示我看到其中包含POST命令。答案不完整。它不是对cURL POST的答复,并且代码的结构有些不同。如果我是专家,我不会问!当然,我可以得到答复,但需要我的POST答复。

在我的原始问题中删除一半或更多的文本是没有逻辑的,无论您有多少要点。实际上,剩下的已经完全改变了问题,并且在继续进行B部分之前并没有帮助我确保A部分是正确的。甚至还有关于标题不正确的答复,但是帖子的那一部分现在已被删除。显然,该帖子是在编辑之前发布的。现在剩下的似乎是无关紧要的答复。哦,再次感谢。

我要求无论这样做的人是谁,都要对发贴人多一些体贴,而不要问您想成为什么样的人。

我想我将在stackanything或serveranything上减少发布,而在其他地方发布更多。这不是第一次,而且完全不尊重原始帖子!

我希望在这里找到一些指导,但只会感到沮丧。

编辑........................................

我是。尝试将文件上传到以HTTP 201 Created消息和Location标头响应的页面。我需要获取该标头的值。

$request = curl_init('http://localhost:80/eSCL/ScanJobs');
// send a file
curl_setopt($request, CURLOPT_POST, true);
curl_setopt(
    $request,
    CURLOPT_POSTFIELDS,
    array(
      'file' => '@' . realpath('ScanSettings.xml')
    ));

// output the response
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($request);

// close the session
curl_close($request);

这行得通,但没有得到我想要的标题值。

1 个答案:

答案 0 :(得分:0)

您的header函数对其参数使用的语法不正确。第二个参数是$replace (布尔,默认为true,它指示是否应覆盖现有的标头

header('HTTP/1.1 201', 'Created');

应该是:

header('HTTP/1.1 201 Created');

如果要读取带有curl的标题,则必须激活该选项:

curl_setopt($request, CURLOPT_HEADER, 1);

然后,您必须在调用curl_exec之后从返回的数据中过滤标题:

$response = curl_exec($request); // don't echo directly, we need that data filtered!

$header_size = curl_getinfo($request, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);