即使我們在瀏覽器地址欄中傳遞URL,我也有幾個Perl腳本被執行。我只是想停止這種行爲。我想要的是當用戶點擊按鈕或鏈接上的腳本附加,然後只有他們應該得到執行。如何讓Perl腳本只在用戶點擊鏈接/按鈕等時執行
www.example.com/cgi-bin/abc.cgi --- Should not work.
<button on-click="/cgi-bin/abc.cgi"> Execute me </button> -- it should work
如何做到這一點?
即使我們在瀏覽器地址欄中傳遞URL,我也有幾個Perl腳本被執行。我只是想停止這種行爲。我想要的是當用戶點擊按鈕或鏈接上的腳本附加,然後只有他們應該得到執行。如何讓Perl腳本只在用戶點擊鏈接/按鈕等時執行
www.example.com/cgi-bin/abc.cgi --- Should not work.
<button on-click="/cgi-bin/abc.cgi"> Execute me </button> -- it should work
如何做到這一點?
你可以這樣做,有兩種方法可以解決它。 一,當按鈕被點擊,你可以使用POST方法提交表單,代碼只應執行當腳本使用POST方法調用,如:
HTML:
<form method="POST" action="/cgi-bin/abc.cgi"><input type="submit" name="submit_button" value="Execute me"><form>
的Perl代碼:
if($ENV{REQUEST_METHOD} eq 'POST') {
## execute special code
}
兩個,你可以檢查查詢字符串的參數:
HTML:
<input type="button" value="Execute me" onClick="window.location.href='/cgi-bin/abc.cgi?doExecute=1';">
的Perl:
use CGI;
my $cgi = new CGI;
if(defined $cgi->param('doExecute') && $cgi->param('doExecute')) {
## execute special code
}
我希望這有助於。
請注意,第二個建議很容易被用戶在地址欄中輸入參數和URL一起挫敗。 –
你也可以給'
可以結合(1)和(2)。然後閱讀幾個從CLI中模擬POST的程序。 –
您基本上希望應用程序服務器決定是否調用腳本。祝你好運。 –
這種氣味可疑地像X-Y問題(https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)你實際上試圖通過阻止用戶手動輸入URL來完成什麼? –
那麼當在地址欄中輸入URL時會發生什麼? –