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

时间:2011-02-26 21:16:42

标签: javascript ajax same-origin-policy

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

所以这是我目前的代码:

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

现在,它正在进行常规连接,但它不支持安全连接(SSL)。 我的意思是,页面是安全的,但请求被发送到非安全页面。

有解决方案吗?

2 个答案:

答案 0 :(得分:2)

将表单的target属性设置为指向隐藏的iframe。

您将无法阅读回复,但您可以提出请求。

如果您想阅读回复,则需要通过自己的服务器代理请求。

答案 1 :(得分:0)

正如David指出的那样,由于相同原始策略的(非常合理的)限制,因此无法对另一个域上的服务执行异步POST。 JSON-P只能工作,因为你可以在DOM中插入标签,它们可以指向任何地方。

你可以使用JSONP进行跨域AJAX w / GET:JSONP CrossDomain

它还介绍了如何使用JSONP w / jQuery

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

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

您无法将其从https发送到http网站。任何https资产(html或其他)只能通过同一域/ ssl证书上的某些内容访问。所以,你将无法做你想做的事(https到http)。因此,由于您的网页是在https上投放的,因此目标http网站因政策而无法访问该网页