Я бег локального CGIHttpServer в Python, и я использую эту программу питона, чтобы запустить что-то в этом сервере:«Может только POST для CGI скриптов» 501 ошибки
''' submit data to form using robots '''
import urllib
import pprint
# hacking gullible app
url = "http://localhost:8000/cgi-bin/w5/captcha.example/vote_app/gullible_app.py"
def vote(lecturer):
params = urllib.urlencode({'lecturer': lecturer,'submit':'submit'})
f = urllib.urlopen(url, params)
pprint.pprint(f.fp.readlines())
vote("Ivo")
Это говорит мне, что это может только POST к сценариям CGI, которые мне кажутся действительно странными, потому что скрипт python открывается в моем веб-браузере по этому адресу просто отлично. Итак ... он работает в моем браузере отлично, но не тогда, когда программа python пытается отправить POST на этот URL. Что здесь происходит? (В интернете очень мало информации об этом - я попытался изучить эту проблему, чтобы решить ее самостоятельно, но есть только 3-4 человека, которые упоминают эту проблему)
EDIT: Извините, ребята! Я не понял GET и POST. Я должен был включить это в вопрос - это программа python «gullible_app.py». Как вы можете видеть, форма выполняет операцию «POST»
import cgi
import cgitb; cgitb.enable()
# form generation
# -------------------------------------------------------
def print_form():
print "Content-Type: text/html\n"
print '''
<html>
<body>
<form method="post" action="gullible_app.py">
<p>Select your favorite lecturer:</p>
<input type="radio" name="lecturer" value="harald" /> Harald
<input type="radio" name="lecturer" value="ivo" /> Ivo
<input type="submit" name="submit" />
</form>
</body>
</html>
'''
# response generation
# -------------------------------------------------------
def print_response():
print 'Content-Type: text/html\n'
print '<html><body>Thank you for your vote!</body></html>'
def main():
user_data = cgi.FieldStorage()
if "submit" in user_data: # user press "submit"
lecturer = user_data.getfirst("lecturer")
f = open("cgi-bin\\w5\\captcha.example\\vote_app\\votes.txt", "a")
f.write(lecturer+'\n')
f.close()
print_response()
else: # display the form
print_form()
main()
Как вы его протестировали, чтобы определить, что он работает в моем браузере? Другими словами, как вы выполняете ** POST ** операцию? Используя браузер, я предполагаю, что у вас есть другая страница с формой, которая отправляется на этот URL? –
@WesleyBaugh Как я проверяю это, перейдя по адресу http: // localhost: 8000/cgi-bin/w5/captcha.example/vote_app/gullible_app.py, который он отображает в соответствии с нормальным – nebffa
Это не POST, хотя выполняет операцию GET. –