有啥理由不使用 JSONP?
Posted
技术标签:
【中文标题】有啥理由不使用 JSONP?【英文标题】:Is there any reason to not use JSONP?有什么理由不使用 JSONP? 【发布时间】:2011-11-16 14:18:58 【问题描述】:我正在开发一个 REST 客户端,它将与名为 attask 的项目管理服务通信。
他们的 REST API 很方便,因为它返回简单的 JSON,易于在我的代码中使用。因此,我决定使用 jQuery 构建界面。我很快发现,由于Same Origin Policy,我无法从我的站点到 Attask API 使用 AJAX。
我的第一个想法是使用RESTSharp 开发一个服务器端的REST 客户端,作为我的javascript 和Attask API 之间的桥梁。
在我开始使用该实现之前,我发现了JSONP。这对我来说是新的。事实证明,Attask API 支持 JSONP。 jQuery 原生支持 JSONP,所以突然间我又开始制作一个完整的 jQuery 接口,无需服务器端干预。
我的问题是,有理由不使用 JSONP 吗?加倍努力构建服务器端 REST 客户端并使用真正的 AJAX 调用会有什么好处吗?
【问题讨论】:
我原以为 JSONP 非常好。除非您的要求是您想在服务器上对请求或响应进行一些处理。使用服务器上的 API,您可能会遇到其他人正在处理的身份验证、性能、可扩展性等问题。 【参考方案1】:请记住,JSONP 正是您正在寻找的:同源策略的解决方法。随之而来的是同源策略旨在避免的所有安全问题。好处是您可以选择您信任的特定域。不利的一面是,如果该域决定违反您的信任,他们现在可以在您的网页上运行任意 javascript 代码,从而允许他们将任何他们想要的信息发送到他们自己的服务器。
如果你信任他们,那就去吧。如果不这样做,请设置您自己的服务器端代理。
【讨论】:
非常好!我什至没有想到这一点。我还意识到,针对他们的 API 进行身份验证将是一个很大的问号,因为我必须将凭据作为纯文本呈现给浏览器。虽然我确实信任 Attask,但我认为仍然存在足够的风险和问题,值得服务器端干预。感谢您的反馈!以上是关于有啥理由不使用 JSONP?的主要内容,如果未能解决你的问题,请参考以下文章