Чтение заголовка клиента из Python сценарий CGI?

Facebook отправляет данные webhook как Content-Type: application/json, а не как …: application/x-www-form-urlencoded (как обычная форма с методом = post.)

Поэтому PHP не заполняет $ _POST - вам нужно прочитать вместо исходного потока. Это можно сделать с помощью file_get_contents('php://input'), а затем просто применить json_decode к этим данным, и у вас будет правильная структура данных для работы.

17
задан jbreed 20 April 2010 в 17:39
поделиться

3 ответа

Если вы работаете как CGI, вы не можете читать HTTP-заголовок напрямую, но веб-сервер помещает большую часть этой информации в переменные среды за вас. Вы можете просто выбрать его из os.environ []

Список переменных среды, которые могут там присутствовать, довольно длинный. Вы можете найти его, выполнив поиск в Интернете по запросу «общий интерфейс шлюза». Например, в http://www.ietf.org/rfc/rfc3875.txt они называются «метапеременными».

16
ответ дан 30 November 2019 в 12:43
поделиться

Как объясняет на этой странице , большинство заголовков HTTP-запросов становятся доступными для вашего CGI-скрипта через переменные среды. Запустите cgi.test () вместо вашего скрипта, чтобы увидеть среду (включая заголовки HTTP-запроса), отображаемую в вашем браузере.

4
ответ дан 30 November 2019 в 12:43
поделиться

Они передаются сценарию CGI через среду:

import os
user_agent = os.environ["HTTP_USER_AGENT"]
ip = os.environ["REMOTE_ADDR"]
9
ответ дан 30 November 2019 в 12:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: