【问题标题】:JSONP question for making PUT/POST/DELETE cross-domain requests用于发出 PUT/POST/DELETE 跨域请求的 JSONP 问题
【发布时间】:2011-06-24 08:26:01
【问题描述】:

我创建了一个支持 GET/POST/PUT/DELETE 请求的 RESTful API。现在我希望我的 API 有一个 Javascript 客户端库,并且我想使用 JSONP 来绕过跨域策略。这可行,但当然只适用于 GET 请求。

所以我开始思考如何实现这样的东西,同时试图让它变得轻松使用。

我想编辑我的 API 实现并检查每个 HTTP 请求。如果它是 JSONP 请求(它在查询字符串中有一个“回调”参数),我会强制每个 API 方法由 GET 请求执行,即使它应该由其他方法(如 POST 或 DELETE)调用。

这不是解决问题的 RESTful 方法,但它确实有效。你怎么看?

也许另一种解决方案是动态生成 IFrame 以发送非 GET 请求。有什么建议吗?

【问题讨论】:

    标签: ajax api rest jsonp cross-domain-policy


    【解决方案1】:

    这里有一个非常相似的问题的一些相关点......

    JSONP Implications with true REST

    存在跨域限制是有原因的 ;-)

    Jsonp 允许您公开有限的、安全的、只读的 API 视图以进行跨域访问 - 如果您破坏了它,那么您可能会打开一个巨大的安全漏洞 - 恶意网站可以对您的 API 进行破坏性调用只需包含一个带有指向 API 右侧部分的 href 的图像

    让您的 webapp 公开通过 iframe 访问的某些功能,其中所有 ajax 都发生在您的 webapp 域的上下文中,这绝对是更安全的选择。即使这样,您仍然需要考虑 CSRF。 (以 Django 博客上的 Django 最新安全公告为例 - 自本周发布以来,所有对 Django webapp 的 javascript 调用都必须默认经过 CSRF 验证)

    【讨论】:

    • 谢谢 - 你知道任何开始使用 IFrame hack 的资源吗?
    【解决方案2】:

    Iframe hack 在最近的浏览器上不再有效,不再使用它(来源:http://jquery-howto.blogspot.de/2013/09/jquery-cross-domain-ajax-request.html

    【讨论】:

      猜你喜欢
      • 2015-07-10
      • 2015-01-25
      • 2013-11-09
      • 2018-02-19
      • 2020-02-10
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多