Я пытаюсь отправить уведомление с сервера на все устройства Android с той же темой, называющей API-интерфейс для облачных сообщений Google firebase (HTTP v1), однако в ответе http говорится, что 411 код ошибки, который соответствует запросам POST, требует заголовок Content-length,но я добавляю длину содержимого в заголовок http-запроса. Затем я помещаю сценарий в каталог www хоста и вызываю этот сценарий с помощью браузера, запрос выполняется успешно, так как же два способа отправки запросов http, получающих разные результаты?что делает nginx в этом процессе, чтобы сделать запрос успешным?PS: я f12 открываю консоль и вставляю заголовок в заголовок php curl, все равно не работает, чего не хватает, так сбивает с толку ..
$topic = 'xxxxx';
$projectId = 'xxxx';
$title = 'hahaha';
$content = 'lol';
$payload = array(
'message' => array(
'topic' => $topic,
'notification' => array(
'title' => $title,
'body' => $content,
)
)
);
$json = json_encode($payload);
$headers = array(
'Authorization:Bearer '.$this->getFcmApiAccessToken(),
'Content-Type: application/json; UTF-8',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding: gzip, deflate',
'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8',
'Cache-Control: max-age=0',
'Cookie: hrg_session=30d4sk8ue8jbe795m3aavrgv97ds4n9g',
'Host: test.hrgame.com.hk',
'Proxy-Connection: keep-alive',
'Upgrade-Insecure-Requests: 1',
'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36',
);
print_r($headers);
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,"https://fcm.googleapis.com/v1/projects/{$projectId}/messages:send");
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
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;
Ошибка 411 (требуется длина) !! 1
Для запросов POST требуется заголовок Content-length
.Это все, что мы знаем.
google api response