#python #html #xampp
#python #HTML #xampp
Вопрос:
Я создал простую HTML-страницу для публикации в Python script
<!DOCTYPE html>
<html>
<body>
<h1>Name</h1>
<form action="/cgi-bin/ver1.py" method="get">
<label for="fname">VIN</label>
<input type="text" id="fname" name="searchbox"><br><br>
<button type="submit" formtarget="_blank">Submit to a new window/tab</button>
</form>
</body>
</html>
the ver1.py выглядит так:
#!C:Pythonpython.exe
import requests
import webbrowser
import cgi
form = cgi.FieldStorage()
vin=form.getvalue('searchbox')
token='withheld'
dr=requests.get("withheld" % (token, vin))
window_stkr=(dr.json()["car"]["sticker"]["pdf"])
webbrowser.open_new_tab(window_stkr)
Все работает правильно, за исключением той части, где вместо простого открытия одной новой вкладки с помощью window_stkr также открывается вторая вкладка с
конец вывода скрипта перед заголовками
ошибка
при просмотре журнала ошибок из apache единственная строка там следующая:
[Пт 11 сентября 00:46:21.231868 2020] [cgi: ошибка] [pid 11624: tid 1896] [клиент:: 1:54144] Конец вывода скрипта перед заголовками: ver1.py , реферер: http://localhost/decoder.html
Комментарии:
1. всегда помещайте полное сообщение об ошибке (начинающееся со слова «Трассировка») в вопрос (не комментарий) в виде текста (не скриншота). Есть и другая полезная информация.
2. каждая страница / URL / запрос должна отправлять ответ в браузер, но вы ничего не отправляете. Вы не отправляете даже заголовки. И это может быть вашей проблемой.
3. @furas обратной трассировки нет, это единственная строка, которая генерируется после ввода значения в поле
4. на клиент-сервере, когда браузер отправляет запрос (пытается подключиться
url
), сервер должен отправить ответ со страницей или, по крайней мере, с заголовками. Иver1.py
также следует отправить некоторый ответ браузеру — это может быть даже пустая страница, но у нее будут заголовки с информацией для браузера о том, что страница / URL была доступна без проблем (код состояния 200). Или он должен отправить ответ с информацией для перенаправления обратно на страницу с формой.5. Как бы мне отправить ответ с информацией для перенаправления обратно на страницу с формой?
Ответ №1:
Как указал @furas, это было потому, что я не отправлял никакого ответа обратно в браузер.
Я внес нижеприведенные изменения, и вместо 3 вкладок у меня теперь есть одна HTML-страница, а PDF-файл открывается в окне, в котором раньше была ошибка:
#!C:Pythonpython.exe
import requests
import webbrowser
import cgi
form = cgi.FieldStorage()
vin=form.getvalue('searchbox')
token='withheld'
dr=requests.get("withheld" % (token, vin))
window_stkr=(dr.json()["car"]["sticker"]["pdf"])
#webbrowser.open_new_tab(window_stkr)
print('Content-type:text/htmlnn')
print('<html>')
print(' <head>')
print(' <meta http-equiv="refresh" content="0;url=' str(window_stkr) '" />')
print(' </head>')
print('</html>')