JSONP 对您的 API 来说是必须的吗?

Posted

技术标签:

【中文标题】JSONP 对您的 API 来说是必须的吗?【英文标题】:Is JSONP a must for your API? 【发布时间】:2011-12-31 14:47:12 【问题描述】:

我有一个支持 SOAP/JSON/XML 的 WCF API,但我们不提供 JSONP。 这意味着如果有人想使用 JSON 来使用我们的 API,他们必须创建一个服务器端代理来绕过跨浏览器的限制。

我有点喜欢这样,因为它不鼓励用户将 api 密钥和秘密放入客户端代码中。虽然大多数方法都接受和访问令牌,但我们有 auth 方法要求消费者发送密钥和秘密来获取此访问令牌。如果我们公开 JSONP,一些消费者可能会在客户端发出这个请求,我对此并不感到兴奋。

所以...如果您有一个支持 JSON 的 API,那么支持 JSONP 是否必不可少。 要求消费者创建服务器端代理是不是很糟糕?

JSONP 并不难实现,但由于上述原因,我很犹豫。 有点只是在寻找想法/建议。 谢谢

【问题讨论】:

这完全取决于您要寻找什么样的消费者。 感谢您的回复。这是有道理的!我们的合作伙伴使用所有不同的语言与我们的系统进行交互。喜欢 javascriptphp、.NET 和前端开发人员。我们的合作伙伴使用您从 API 获得的数据制作各种应用程序。因此,我想让 API 对于许多不同的消费者来说尽可能容易使用,这就是我想公开 JSONP 的原因——但不确定我是否有一个有效的安全问题反对这样做。 【参考方案1】:

您可以制作仅适用于 JSONP 的特殊身份验证密钥,然后返回检查 location 并确保该身份验证密钥被有效站点使用的 Javascript。

但是,这不会阻止恶意服务器发送 JSONP 请求并解析 JSON。

您需要弄清楚您的合作伙伴想要什么以及攻击者可能会采取什么行动,以便在可用性和安全性之间进行权衡。

【讨论】:

我们可以聊聊这个吗?我有一个新的 JSON api,我正在尝试获得有关安全措施的专家意见。如果你不介意聊天,我很乐意让你脑筋急转弯半小时左右?

以上是关于JSONP 对您的 API 来说是必须的吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 jsonp 与 angular-ui 日历一起使用

Google Maps API 密钥可能对您的捆绑包 ID 无效

抽屉通知图标必须是白色的吗?

简单理解jsonp原理

对jsonp原理理解

自动定期计费真的是自动化的吗?