2

リンクのリストを含む Web ページを生成する単純な python モジュールがあります。このページはブラウザで自動的に開かれますwebbrowser.open('file://' + file.name): ここでは問題ありません。
この Web ページから、リンク ( のような href を持つhttp://localhost/cgi-bin/script.py?param1=Something) をクリックすると、渡された値でいくつかの操作を実行する cgi スクリプトが開始され、最後に新しい Web ページが生成され、私のマシンにローカルに保存されます (たとえば、 ) のようなパスを/home/user/web/out/、すべての rwx アクセス許可を正しく設定したフォルダーに配置します。
さて、私はこの 2 日間、ブラウザでこの新しいページを自動的に開こうとしてきました。ドキュメントやフォーラムを検索して見つけたすべての解決策を試してみました。で試しましたwebbrowser.open()繰り返しますが、Web サーバーから新しいブラウザー ウィンドウ自体を開くことができないため、使用できないことに気付きました。print "Content-type: text/html\n\n"次に、最初にヘッダー( )を印刷してから、リダイレクトを試みました

print "Status: 302 Moved"
print "Location: file:///home/user/web/out/abc.html\n\n"`

しかし、これは単なる空白のページを示しています。次のような他のリダイレクトソリューションを試しました

print "<meta http-equiv='refresh' content='0' url='file:///home/user/web/out/abc.html'>"
print "<script type="text/javascript">location.href='file:///home/user/web/out/abc.html';</script>"
print "<script type="text/javascript">windows.open('file:///home/user/web/out/abc.html');</script>"

新しいページを開くトリガーとなるメソッドを使用してボタンを挿入しようとしましたPOSTが、成功しませんでした。空白のページが表示され続けます。このページをブラウザで
手動で開くと、適切に表示されることは言うまでもありません。abc.html

これは、Web サーバーから開いている html ページがローカルに保存されているという事実に関係していると思いますが、これを解決する方法がわかりません。誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

0

CGI スクリプトはリダイレクトできません。

Note that status code 200 is sent prior to execution of a CGI script, so
scripts cannot send other status codes such as 302 (redirect).

これはいくつかのコードです:

self.send_response(200, "Script output follows")

モジュール: http.server (Python 3)

ただし、ファイルを開いて、sys.stdout.writeまたはshutilを使用してその内容を標準出力にコピーするだけです。

于 2013-10-09T20:44:03.000 に答える