鍍金池/ 問答/PHP  Linux  HTML/ php curl和瀏覽器訪問腳本的方式究竟有什么不同?

php curl和瀏覽器訪問腳本的方式究竟有什么不同?

php curl和瀏覽器訪問腳本的方式究竟有什么不同?
現(xiàn)在向一個(gè)api發(fā)起的請(qǐng)求用瀏覽器訪問腳本的方式可以正確返回值,而用php-curl發(fā)送post的方式就返回錯(cuò)誤值說(shuō)content-length的值沒有制定。這兩者有什么不同?nginx代理過(guò)程中做了什么?

$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;

錯(cuò)誤代碼

回答
編輯回答
孤影

content-length 錯(cuò)誤就設(shè)置請(qǐng)求頭就行了啊

2017年1月3日 01:14
編輯回答
笨小蛋

php 的 curl 一般也是不需要設(shè)置 content-length 的。

建議最好把 curl 相關(guān)的代碼貼出來(lái)。

2017年3月19日 18:52
編輯回答
萌二代

一個(gè)是瀏覽器會(huì)幫你處理header請(qǐng)求頭,一個(gè)需要你自己拼裝,當(dāng)然如果有cookie之類的,curl你還要自己設(shè)置

2017年10月10日 14:40