Рассмотрим следующий сценарий test.py
на сервере Apache:
#!/usr/bin/env python
import cgi
cgi.test()
Если я позвоню http://domain.local/test.py?foo=bar
, на выходе будет сказано (среди прочего):
QUERY_STRING
REQUEST_METHOD
GET
Command Line Arguments
[]
Form Contents:
No form fields.
Если я отправлю данные с помощью запроса POST, QUERY_STRING
и REQUEST_METHOD
вообще не появятся, не говоря уже о том, что раздел содержимого формы все еще пуст.
Почему это происходит и как я могу это решить?
Я решил проблему с помощью обходного пути:
import urlparse
import sys
print "Content-Type: text/plain;charset=utf-8"
print
data=dict(urlparse.parse_qsl(sys.stdin.read()))
for field in data:
print field,data[field]
В моем конкретном случае сценарий будет принимать только данные POST (я бы использовал $ _POST в PHP, отказавшись от $ _GET). Его можно легко изменить, чтобы иметь возможность анализировать данные GET, будь то вместо или в дополнение к POST.
Однако мне все еще было бы интересно узнать, почему первоначальный подход не сработал.