从sinatra应用程序发送帖子请求到rails应用程序

时间:2012-10-10 06:29:31

标签: javascript ruby-on-rails jquery sinatra

我需要将一个来自sinatra应用程序的POST请求发送到rails应用程序,该应用程序将返回一些json。我在本地测试这个功能。网址如下:

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

在localhost上,网址为:

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来测试请求并且它可以工作,但是在上面的代码中根本没有提出请求。我的代码中有什么错误?

谢谢

2 个答案:

答案 0 :(得分:3)

您也可以设置此设置:

jQuery.support.cors = true;

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

答案 1 :(得分:1)

这是作为XSS攻击而停止的。即使它们位于同一个域中,子域也是不同的,这就足够了。有关详细信息,请参阅Are AJAX calls to a sub-domain considered Cross Site Scripting?

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