2011-09-13 46 views
1

我正在开发一个REST客户端,它将与名为attask的项目管理服务交谈。有没有理由不使用JSONP?

他们的REST API很方便,因为它返回简单的JSON,这在我的代码中很容易使用。因此,我决定用JQuery构建接口。我很快发现,由于Same Origin Policy的原因,我无法将AJAX从我的网站用于Attask API。

我的第一个想法是开发一个使用RESTSharp的服务器端休息客户端,它将充当我的JavaScript和Attask API之间的桥梁。

在我开始执行该实现之前,我发现了JSONP。我相信你们很多人都很熟悉它,但这对我来说是新的。事实证明,Attask API支持JSONP。 JQuery本身支持JSONP,所以突然间我又回到了制作完整的jQuery界面,而不需要服务器端的干预。

我的问题是,有没有理由不使用JSONP?增加服务器端REST客户端和使用真正的AJAX调用会有什么好处吗?

任何输入表示赞赏。

+0

我会认为JSONP是完美的。除非你的要求是你想要在服务器上处理请求或响应。然后,通过服务器上的API,您可能会遇到其他人正在处理的身份验证,性能,可伸缩性等问题。 –

回答

6

请记住,JSONP正是你正在寻找的东西:解决同源策略的方法。这将带来所有相同原产地政策意图避免的安全问题。好处是您可以选择您信任的特定域名。缺点是,如果该域名决定违反您的信任,他们现在可以在您的网页上运行任意的JavaScript代码,从而允许他们发送任何他们想要的信息到他们自己的服务器。

如果你信任他们,就去做吧。如果您不这样做,请设置您自己的服务器端代理。

+0

非常好的一点!我甚至没有想到这一点。我也意识到,针对他们的API进行身份验证将是一个很大的问题,因为我将不得不以纯文本的形式向浏览器呈现证书。尽管我信任Attask,但我认为仍然有足够的风险和问题值得服务器端的干预。感谢您的反馈! – Chev