无法通过 PHP 但使用 Postman 接收标头信息 [重复]
Posted
技术标签:
【中文标题】无法通过 PHP 但使用 Postman 接收标头信息 [重复]【英文标题】:Cannot recieve header information via PHP but with Postman [duplicate] 【发布时间】:2019-08-23 03:13:53 【问题描述】:我正在尝试在 POST 请求的标头中获取 Token。使用 Postman 它可以工作,但是当我在 php 中运行它时,我得到了正确的内容,但无法提取标题信息。
我复制了 Postman 中生成的 PHP 代码,但无法提取标题信息。我只得到内容。
我使用的代码:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://xxxx.yyyy.xy/xxxxxx/xxxxxxxxxxx",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"Content-Type: application/x-www-form-urlencoded",
"Postman-Token: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"cache-control: no-cache"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err)
echo "cURL Error #:" . $err;
else
echo $response;
?>
标头应包含“令牌”。 我无法收到任何标题信息。
【问题讨论】:
我找到了解决问题的办法: 【参考方案1】:我找到了解决问题的方法:
<?php
$curl = curl_init();
$Username = "XXXXXXXXX";
$Password = "YYYYYYYYYY";
$Credentials = base64_encode($Username.':'.$Password);
$Credentials_Auth = "Authorization: Basic ".$Credentials;
// echo "<br>Cred-auth: ".$Credentials_Auth."<br>";
curl_setopt_array($curl, array(
CURLOPT_URL => "https://XXXXXXXXX/YYYYYYYYYYY/ZZZZZZZZZZZ",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
**CURLOPT_HEADER => 1,**
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "",
CURLOPT_HTTPHEADER => array(
$Credentials_Auth,
"Content-Type: application/x-www-form-urlencoded",
"cache-control: no-cache"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
if ($err) echo "cURL Error #:" . $err;
else echo $response;
**$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$headers = substr($response, 0, $header_size);
$body = substr($response, $header_size);**
curl_close($curl);
**header("Content-Type:text/plain; charset=UTF-8");
echo $headers;
echo $body;**
?>
【讨论】:
以上是关于无法通过 PHP 但使用 Postman 接收标头信息 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
CORS - 从 Postman 伪造 CORS 预检无法返回标头