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