无法通过 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 接收标头信息 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP POST 请求中缺少授权标头

CORS - 从 Postman 伪造 CORS 预检无法返回标头

尽管在标头中发送了 base64,但附件无法识别

Laravel VueJS,Axios 看不到 CORS 标头,但 Postman 和浏览器可以

Postman API 无效的内容类型标头

无法让cURL命令在Postman中工作