我正在尝试处理我正在处理的apache服务器上的PHP生成的HTML页面中的CGI脚本(位于远程计算机上)的响应。
首先是一点背景。访问该网页的用户被要求使用用户名和密码(htaccess)登录。登录后,确定组织中用户的用户名和站点代码。例如,让:
username: user
sitecode: IN88
我正在以HTML格式处理CGI调用,如下所示:
<form method="POST"
action="http://path/scriptName.cgi?userid=user&siteid=IN88&type=desktop">
<input type="submit" value="Create Account"></input>
<div id="result"></div>
</form>
按如下方式处理响应(脚本返回简单文本作为输出,表示SUCCESS,如果创建帐户,或者SKIPPED,如果用户帐户已存在):
<script>
$(function() {
$('form').submit(function(event) {
event.preventDefault();
$.ajax({
url: 'http://path/script.cgi?userid=user&siteid=IN88&type=desktop',
type: 'POST',
dataType: 'text',
beforeSend: function() {
$('#result').html("Sending Request to Server ...");
},
success: function (response) {
console.log('Success response: ' + response);
var text = "Account Registration Status: " + response;
$('#result').html(text);
},
error: function(response){
console.log('Error response: ' + response);
$('#result').html("Account Registration Status: " + response);
}
});
});
});
</script>
我得到的错误是:
XMLHttpRequest无法加载http://path/script.cgi?userid=user&siteid=IN88&type=desktop
。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许对“myMachineName”进行访问。
现在从错误中可以看出,存在一些访问问题,CGI脚本所在的服务器机器无法访问来自原始机器的HTTP请求。我尝试在AJAX请求中添加以下标头信息:
'Access-Control-Allow-Origin':'*'
但这也不起作用。任何帮助将不胜感激。
感谢。
答案 0 :(得分:0)
您的网址不正确。 http://path/script
将尝试点击名为path
的服务器。由于您的ajax代码是从服务器加载的(例如example.com
),因此您有效地尝试执行跨域请求。浏览器甚至不愿意尝试发起http请求,它会立即被拒绝,而不会遇到网络。
对于简单的AJAX请求,您的网址可以只是url: '/path/script?....'
,浏览器会自动填写http://example.com
,就像您的html中有<img src="kittens.jpg">
一样。
或者您添加了服务器的名称,因此url: 'http://example.com/path/etc...'