我有一個CGI腳本在服務器上生成一個文件,然後將瀏覽器重定向到新生成的文件。CGI腳本沒有執行每個頁面訪問
#!/bin/bash
printf "Content-type: text/html\n\n";
cat /myspecialdir/foo > /httpd/foo.html
echo "<HTML><HEAD><BODY>"
echo "<META HTTP-EQUIV=\"CACHE-CONTROL\" CONTENT=\"NO-CACHE\">"
echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"1; URL=/foo.html\">"
echo "</BODY></HEAD></HTML>"
文件/ myspecialdir/foo包含一些我想要在/httpd/foo.html中的動態內容。然後我希望腳本在生成新文件後重定向到那裏。
我遇到的問題是腳本無法從瀏覽器中獲取每次點擊的新數據。例如,如果我在IE中第一次訪問http://myip/cgi-bin/genfoo.cgi,數據就會生成並被重定向到foo.html。之後,如果我使用後退按鈕轉到CGI頁面,它不會重新運行,並且我被重定向到陳舊的數據。
如何強制CGI腳本執行,即使從後退按鈕?
編輯:我試着用HTTP頭的方法做這件事,但這似乎並沒有工作。這是新腳本,我錯過了什麼?
#!/bin/bash
cat /myspecialdir/foo > /httpd/foo.txt
printf "Pragma-directive: no-cache\n\n";
printf "Cache-directive: no-cache\n\n";
printf "Cache-control: no-cache\n\n";
printf "Pragma: no-cache\n\n";
printf "Expires: 0\n\n";
printf "Location: /foo.txt\n\n";
printf "Content-type: text/html\n\n";
這一切都在我的訪問通過IE瀏覽器是打印頭在頁面中,像這樣:
語用指令:無緩存
緩存指令:無緩存
緩存控制:無緩存
雜注:無緩存
防爆皮雷:0
地點:/BACtrace.txt
內容類型:text/html的
編輯:
事實證明,這是與我所用的HTTP服務器的問題(busybox v1.12.1)。我無法發送最初推薦的HTTP標頭,但是我可以通過組合META標籤和IE8中的設置(工具 - > Internet選項 - >瀏覽歷史 - >設置按鈕 - - >檢查「每次我訪問一個網站」)。
我使用的META標籤:
echo "<meta http-equiv=\"expires\" content=\"0\" />"
echo "<META HTTP-EQUIV=\"Pragma-directive\" CONTENT=\"no-cache\"/>"
echo "<META HTTP-EQUIV=\"Cache-directive\" CONTENT=\"no-cache\"/>"
echo "<META HTTP-EQUIV=\"Cache-control\" CONTENT=\"no-cache\"/>"
echo "<META HTTP-EQUIV=\"Pragma\" CONTENT=\"no-cache\"/>"
echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"1; URL=/foo.txt\"/>"
對不起,肖恩,但是那並不是」 t重定向。所做的只是在瀏覽器中打印「位置:/foo.html」。我錯過了什麼嗎? 新腳本是: #!/ bin/ash cat/myspecialdir/foo> /httpd/foo.txt printf「Location:/foo.txt\r\n」; printf「Pragma-directive:no-cache \ r \ n」 printf「Cache-directive:no-cache \ r \ n」 printf「Cache-control:no-cache \ r \ n」 printf「Pragma:無緩存\ r \ n」個 printf的 「過期:0 \ r \ n」 個 – cigarman 2009-08-04 14:35:55
見我對細節的編輯。 – 2009-08-04 16:06:22
感謝您的澄清,肖恩。它看起來像我使用的服務器(來自舊的BusyBox的httpd)會破壞它,因爲它會自動發送Content-type:text/plain標頭,從而阻止我的腳本發送標頭。所以,毫無疑問,我必須使用META標籤。 – cigarman 2009-08-04 16:24:18