2013-10-09 84 views
1

不打開HTML文件我有一個生成包含鏈接列表的網頁一個簡單的Python模塊。此頁面通過webbrowser.open('file://' + file.name)在瀏覽器中自動打開:這裏沒有問題。
從這個網頁,點擊鏈接上時(其中有像http://localhost/cgi-bin/script.py?param1=Something A HREF)它的午餐CGI腳本執行與傳遞的值,並在年底一些操作產生一個新的網頁,在我的機器上本地存儲(例如在像/home/user/web/out/這樣的路徑中),在我正確設置所有rwx權限的文件夾中。
那麼,我一直試圖在瀏覽器中自動打開這個新頁面兩天,嘗試使用通過文檔和論壇搜索的所有解決方案。我再次嘗試webbrowser.open(),但後來我意識到我無法使用它,因爲從Web服務器我無法打開新的瀏覽器窗口本身。然後我試圖與重定向,先打印頭(print "Content-type: text/html\n\n"),然後Python的CGI腳本在本地目錄

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頁面在本地存儲做的,但我不知道如何解決這個問題。有人能指出我正確的方向嗎?

+0

我只是猜測,但如果你能重定向到本地文件,然後每個人都主辦網站將能夠從你的電腦讀取的所有內容。所以也許你不能從一個網站重定向到本地文件。但是您可以使用服務器打開本地文件並提供內容。 – User

+0

@用戶呃...你說的'爲內容提供服務'是什麼意思?我實際上設法編寫了要在'cgi-bin/out/abc.html'中打開的新網頁,但是我仍然沒有得到腳本來打開它甚至重定向到它。 – Faabiioo

+0

CGI腳本無法重定向我記得。 'http.server'中的'self.send_response(200,「Script output outputs following」)''。 – User

回答

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.writeshutil複製內容到標準輸出。

+0

將html文件的內容複製到'stdout'沒有完成這項工作。我想嘗試創建一個Web服務器並將這兩件事分開,但我希望它可以更快更容易 – Faabiioo

+0

您仍然可以修改http服務器。 – User