AJAX跨域请求公共API

时间:2014-10-25 04:27:09

标签: javascript ruby-on-rails ajax cross-domain

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

然而,在执行请求时出现错误:

  

否'访问控制 - 允许 - 来源'标题出现在请求的上   资源。起源' 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

3 个答案:

答案 0 :(得分:0)

我认为这可能会对您有所帮助,有一个如何进行跨域请求的示例

https://stackoverflow.com/a/17875201/2043592

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

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