【nginx】php curl和浏览器访问脚本的方式究竟有什么不同?

php curl和浏览器访问脚本的方式究竟有什么不同?
现在向一个api发起的请求用浏览器访问脚本的方式可以正确返回值,而用php-curl发送post的方式就返回错误值说content-length的值没有制定。这两者有什么不同?nginx代理过程中做了什么?

$topic = 'topic';

$projectId = 'projectid';

$title = 'hahaha';

$content = 'lol';

$payload = array(

'message' => array(

'topic' => $topic,

'notification' => array(

'title' => $title,

'body' => $content,

)

)

);

$json = json_encode(trim($payload));

$headers = array(

'Authorization:Bearer '.$this->getFcmApiAccessToken(),

'Content-Type: application/json; UTF-8',

'Content-Length:'.strlen($json),//'Content-length:0'

);

$ch = curl_init();

curl_setopt($ch,CURLOPT_URL,"https://fcm.googleapis.com/v1/projects/{$projectId}/messages:send");

curl_setopt($ch,CURLOPT_POST, true );

curl_setopt($ch,CURLOPT_HEADER, 1);

curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);

curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, false);

curl_setopt($ch,CURLOPT_POSTFIELDS, $json);

curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($ch);

curl_close($ch);

var_dump($result);exit;

【nginx】php curl和浏览器访问脚本的方式究竟有什么不同?

回答

content-length 错误就设置请求头就行了啊

一個是瀏覽器會幫你處理header請求頭,一個需要你自己拼裝,當然如果有cookie之類的,curl你還要自己設置

php 的 curl 一般也是不需要设置 content-length 的。

建议最好把 curl 相关的代码贴出来。

以上是 【nginx】php curl和浏览器访问脚本的方式究竟有什么不同? 的全部内容, 来源链接: utcz.com/a/86159.html

回到顶部