1

我需要从 sinatra 应用程序向 Rails 应用程序发送一个 POST 请求,该应用程序将返回一些 json。我在本地测试此功能。网址如下:

Rails app : railsapp.mydomain.com/api/v1.json
Sinatra app: sinatraapp.mydomain.com

在本地主机上,网址是:

Rails app: localhost:3000/api/v1.json
Sinatra app:localhost 3001

在我在本地运行的 sinatra 应用程序中,我有以下代码在本地发出 POST 请求

$("#submit").click(function(){
   $.post("http://localhost:3000/api/v1.json",
     {email:"<email_here>",password:"<password_here>"},
     function(data) {
         //Do something with response
     }
   );

});

此外,Content-Type请求标头中的"application/x-www-form-urlencoded". 我在 Firefox 中使用 REST Client 来测试请求并且它可以工作,但是在上面的代码中根本没有发出请求。我的代码有什么错误?

谢谢你

4

2 回答 2

3

您还可以设置以下设置:

jQuery.support.cors = true;

这使您可以使用 jQuery 进行跨域调用。这可能不是最好的解决方案,因为您正在使用以下请求标头添加漏洞:Access-Control-Allow-Origin。

于 2012-10-10T06:46:15.690 回答
1

这将作为 XSS 攻击被阻止。即使它们在同一个域上,子域也是不同的,这就足够了。有关详细信息,请参阅对子域的 AJAX 调用是否被视为跨站点脚本?.

要纠正这个问题,您可以简单地让 AJAX 访问您的本地控制器,并使用 ruby​​ 发出请求,这不受上述限制的限制。

于 2012-10-10T06:32:52.300 回答