无法在跨域上使用 JSONP 发布数据
Posted
技术标签:
【中文标题】无法在跨域上使用 JSONP 发布数据【英文标题】:Unable to post data using JSONP on Cross Domain 【发布时间】:2013-09-26 20:34:51 【问题描述】:我们有一个场景,我们需要将数据从我们的域 (x.com) 发布到不同的域 (y.com)。 y.com 上的操作归因于HTTPPost
,并且可以更改。但是在使用AJAX
和JSONP
和HTTPMethod POST
将数据发布到y.com 时,请求会自动转换为HTTPMethod GET
。
【问题讨论】:
【参考方案1】:JSONP
请求是 GET
请求,不能使用 POST
请求进行。如果您想发送发布请求,请查看跨源资源共享。
【讨论】:
【参考方案2】:您不能使用JSONP 发布(查看here 和here),因为它只是doesn't work that way - 它创建一个<script>
元素来获取数据,这必须通过GET 请求完成。 JSONP方案不使用XmlHttpRequest
对象,所以不是标准理解方式的AJAX请求,但内容仍然是动态访问的——对最终用户来说没有区别。
JSONP 确实可以用来克服same origin policy 的限制,但您也可以使用CORS,在现代浏览器中实现alternative 到带有Padding 的JSON。
【讨论】:
感谢您的回答。【参考方案3】:作为一种解决方法,您可以做的是使用 postMessage 解决跨域通信,这是 html5 的一个新功能。但是,为了解决它,您需要使用 iframe,如果您不想显示某些 iframe,您可以使用 display:none css 属性创建 1x1px。 这将使您实现目标。
【讨论】:
以上是关于无法在跨域上使用 JSONP 发布数据的主要内容,如果未能解决你的问题,请参考以下文章