JSONP提出PUT / POST / DELETE跨域请求的问题

时间:2011-02-09 18:29:13

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

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

所以我开始思考如何实现这样的事情,同时努力使其无痛使用。

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

这不是解决问题的RESTful方法,但它有效。你觉得怎么样?

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

2 个答案:

答案 0 :(得分:1)

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

JSONP Implications with true REST

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

Jsonp允许您公开API的有限,安全,只读视图以跨域访问 - 如果您颠覆那么您可能会打开一个巨大的安全漏洞 - 恶意网站可能会对您的API进行破坏性调用简单地通过包含指向API正确部分的href的图像

让您的webapp公开通过iframe访问的某些功能,其中所有ajax都出现在您的webapp域的上下文中,这绝对是更安全的选择。即便如此,您仍需要考虑CSRF。 (看看Django在Django博客上发布的最新安全公告是一个很好的例子 - 本周发布的所有javascript调用Django webapp都必须默认为CSRF验证)

答案 1 :(得分:-1)

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

相关问题