Javascript 使用JS将帖子发送到其他域

Javascript 使用JS将帖子发送到其他域,javascript,ajax,same-origin-policy,Javascript,Ajax,Same Origin Policy,我希望在更改某个文本输入字段后使用javascript发送post请求 这是我目前的代码: <input name="message" onchange="$.ajax({type: \"POST\", url: \"http://example.com/example.php\", data: \"message=\" + document.getElementsByName(\"message\")[0].value});" /> 现在,它可以在常规连接上工作,但不能在安全

我希望在更改某个文本输入字段后使用javascript发送post请求

这是我目前的代码:

<input name="message" onchange="$.ajax({type: \"POST\", url: \"http://example.com/example.php\", data: \"message=\" + document.getElementsByName(\"message\")[0].value});" />

现在,它可以在常规连接上工作,但不能在安全连接(SSL)上工作。 我的意思是,页面是安全的,但请求被发送到非安全页面


有解决方案吗?

正如David指出的,由于同源策略的限制(相当合理),t不可能对另一个域上的服务执行异步POST。JSON-P之所以有效,是因为您可以在DOM中插入标记,并且标记可以指向任何地方

您可以使用JSONP执行跨域AJAX w/GET:

它还介绍了如何使用jQuery执行JSONP

同源策略防止从一个源加载的文档或脚本从另一个源获取或设置文档的属性。如果两个页面的协议、端口和主机相同,则认为两个页面具有相同的源

当页面的其余部分也使用ssl(例如https)时,请确保在ajax url中指定ssl


您无法将其从https发送到http站点。任何https资产(html或其他)只能由同一域/ssl证书上的内容访问。因此,您将无法执行您正在尝试执行的操作(https到http)。因此,由于您的页面是在https上提供的,因此目标http站点无法访问它,因为策略设置了表单的target属性,以指向隐藏的iframe

您将无法读取响应,但可以提出请求


如果要读取响应,需要通过自己的服务器代理请求。

发送不是问题。只收。非常正确,但我想既然他在做阿贾克斯,他也希望收?@kjy112:这很有可能,但问题(尚未)中没有说明。)@费利克斯克林,你是对的。假设从来都不是一件好事你怎么提交表格?作为Ajax还是作为“普通”请求?如果您执行一个普通请求,即浏览器被重定向到一个新的(或相同的)站点,那么对另一个域的调用最好在服务器端完成。page关于使用JSON-P的所有内容都使用GET方法完成。大卫·多沃德:一方面,服务器必须支持JSONP。另一方面,没有任何东西反对在POST请求中使用JSONP。仅仅因为本文在示例中使用了GET,并不意味着不可能使用POST。事实上,这正是它的意思。JSON-P的工作原理是让第三方站点上的脚本(通过
导入)调用第一方站点定义的函数。无法使用POST请求导入脚本(除非您执行类似XHR it的操作,然后执行
eval
it-但这无法到达第三方网站)。完全没有看到OP正在严格执行POST抱歉。@David Dorward:啊,抱歉。我对JSONP有一个稍微错误的想法。当然,脚本的检索不能通过GET完成。不知何故,我认为还有另一个要求涉及,我的意思是这是一个职位的要求。。。别见怪我不是这个意思。我希望表单能够正常发送,同时向另一个域发出ajax post请求(只需发送它,我不需要阅读响应)。@Lior那么你基本上是想在同一时间将表单发送到另一个域吗?类似php的cURL?提交表单,给它一些时间,然后更改表单的目标并调用它的
submit()
方法。不过这有点冒险。我认为服务器端解决方案更好