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

发布于 2022-09-07 08:45:17 字数 1406 浏览 51 评论 0

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;

错误代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

雨后咖啡店 2022-09-14 08:45:17

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

够钟 2022-09-14 08:45:17

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

も星光 2022-09-14 08:45:17

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文