这就是它的工作原理:
<div id="result">Result will be printed here</div>
<form method="POST" action="/cgi-bin/execute.cgi">
<input type="text" name="user" /> <br/>
<input type="password" name="password" /> <br/>
<input type="submit" value="Send"/>
</form>
execute.cgi:
#!/bin/sh
echo "Content-type: text/html"
echo ""
java -version
这将显示&#34; java -version&#34;的输出。在新的页面中 到目前为止,一切都按预期工作。
但是,如果我使用ajax执行请求:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
$(function() {
$('form').submit(function(event) {
event.preventDefault();
$.ajax({
url: '/cgi-bin/execute.cgi',
type: $(this).attr('method'),
contentType: 'application/x-www-form-urlencoded',
data: $(this).serialize(),
success: function(response) {
console.log('response length:' + response.length);
$('#result').html(response);
}
});
});
});
</script>
响应的正文大小为0,状态代码为200 好像&#39; java -version&#39;被忽略或者不等待它打印输出。 我宁愿认为这是后一种情况,因为如果我转向更轻松的东西,比如&#39; ls -la&#39;然后它就像一个魅力。
所有想法如何解决这个问题?