使用JS将帖子发送到不同域名

5

当特定文本输入字段发生更改时,我希望发送一个POST请求,使用JavaScript实现。

以下是我的当前代码:

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

现在,它在普通连接上运作正常,但在安全连接(SSL)上不起作用。

我的意思是,页面是安全的,但请求被发送到一个非安全页面。

有解决方案吗?


3
发送不是问题,只有接收有问题。 - Felix Kling
非常正确,但我认为既然他正在使用ajax,他也希望接收到数据吧? - KJYe.Name
1
你是如何提交表单的?使用Ajax还是“普通”请求?如果你使用普通请求,也就是浏览器重定向到一个新的(或相同的)网站,那么在服务器端进行对另一个域的调用会更好。 - Felix Kling
@Lior 因此,JSON-P被许多人视为一种不安全和hacky的跨域Ajax方法,这是有原因的。作者必须勤奋地仅对他们控制或隐含信任的远程Web服务进行此类调用,以避免损害其用户。 - KJYe.Name
结果我的解释很糟糕,没有人理解我的意思。我更新了第一篇帖子,请查看一下。 - Lior
显示剩余6条评论
2个回答

2

将表单的目标属性设置为指向一个隐藏的iframe。

你无法读取响应,但可以发起请求。

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


这不是我所想要的。我希望表单正常提交,同时向另一个域发送ajax post请求(只需发送,无需读取响应)。 - Lior
@Lior 所以您基本上想要在发送表单的同时,将其发布到另一个域?类似于 PHP 的 cURL 吗? - KJYe.Name
提交表单后,给它一些时间来处理,然后更改表单的目标并调用其 submit() 方法。 - Quentin
这有点冒险。我认为服务器端的解决方案更好。 - KJYe.Name

0

正如David所指出的那样,由于同源策略的限制(这是非常明智的),在向另一个域上的服务进行异步POST是不可能的。JSON-P之所以有效,是因为你可以将


该页面关于使用JSON-P的所有内容都是使用GET方法进行说明的。而问题所问为POST方法。 - Quentin
@David Dorward:嗯,一方面,服务器必须支持JSONP。另一方面,没有任何理由不使用POST请求来使用JSONP。仅仅因为文章在示例中使用GET并不意味着不能使用POST。 - Felix Kling
4
实际上,这正是它的含义。JSON-P 的工作原理是,在第三方网站上(通过 <script src> 导入)有一个脚本调用由第一方网站定义的函数。无法使用 POST 请求导入脚本(除非像 XHR 一样处理,然后 eval 它 —— 但是这不能到达第三方网站)。 - Quentin
该页面使用 SSL,但请求发送到的页面未使用 SSL,因此不应为 HTTPS。 - Lior
@Lior 我建议使用PHP或服务器端来处理通过cURL将表单发布到两个不同位置的内容。http://davidwalsh.name/execute-http-post-php-curl - KJYe.Name
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接