Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX跨域请求公共API_Javascript_Ruby On Rails_Ajax_Cross Domain - Fatal编程技术网

Javascript AJAX跨域请求公共API

Javascript AJAX跨域请求公共API,javascript,ruby-on-rails,ajax,cross-domain,Javascript,Ruby On Rails,Ajax,Cross Domain,我正试图通过一个AJAX调用来设置一篇文章,以注册网页中的一些基本数据。这应该是一个公共web服务,因此可以通过包含JS脚本从任何域发送请求 但是,在执行请求时,我遇到了一个错误: 请求的服务器上不存在“Access Control Allow Origin”标头 资源因此,不允许访问源“xxxxxx”。 响应的HTTP状态代码为422 服务器响应设置为以下内容: response.headers['Access-Control-Allow-Origin'] = '*' response

我正试图通过一个AJAX调用来设置一篇文章,以注册网页中的一些基本数据。这应该是一个公共web服务,因此可以通过包含JS脚本从任何域发送请求

但是,在执行请求时,我遇到了一个错误:

请求的服务器上不存在“Access Control Allow Origin”标头 资源因此,不允许访问源“xxxxxx”。 响应的HTTP状态代码为422

服务器响应设置为以下内容:

response.headers['Access-Control-Allow-Origin'] = '*'
    response.headers['Access-Control-Allow-Methods'] = 'POST, PUT, DELETE, GET, OPTIONS'
    response.headers['Access-Control-Request-Method'] = '*'
    response.headers['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept, Authorization'
下面是JS请求:

var params = "f="+_.open+"&t="+_.t0;
xmlhttp.open("POST",TRACKURL,true);
xmlhttp.send(params);
我猜请求中缺少了一些东西,但我找不到如何修复它

如果你有主意,我很高兴听到


thnaks

您需要在客户端上使用XMLHttpRequest2或XDomainRequest IE对象。

我终于找到了问题的答案,如果这可以帮助其他人:实际上浏览器在POST请求之前发送一个选项请求,因此为了创建跨域AJAX请求,您需要在POST响应和OPTIONS响应中设置头。这可以在应用程序或web服务器配置中完成

我建议查看浏览器的“网络”选项卡,看看标题是否真的像你想的那样通过。是的,我已经检查过它们是否正确通过。