在AJAX中处理远程CGI脚本的响应

时间:2014-06-27 21:15:47

标签: javascript php html ajax

我正在尝试处理我正在处理的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':'*'

但这也不起作用。任何帮助将不胜感激。

感谢。

1 个答案:

答案 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...'