如何从HTTPS页面将数据发布到HTTP页面

时间:2010-04-20 18:16:22

标签: javascript

我知道这是一个很长的镜头,但我想我还是会问这个问题。

我有一个HTTPS页面,我正在动态创建表单。我想将表单POST到HTTP页面。如果没有浏览器弹出警告,这可能吗?当我在IE8上执行此操作时,收到以下消息:

  

Do you want to view only the webpage content that was delivered securely

基本上,我问的是问题1554237的反转。

6 个答案:

答案 0 :(得分:1)

可悲的是,我知道从HTTPS发布到HTTP时绝对没有办法得到警告。如果您安全地提供表单,浏览器也希望安全地提交数据。如果可能的话,它会让用户感到惊讶。

答案 1 :(得分:1)

不,不能做。我们的好朋友IE总会弹出警告。

答案 2 :(得分:1)

如果您编写自己的后端服务,有一种方法可以做到这一点。因此,假设您要使用前端服务fs1向s1发布HTTP请求。

如果您使用Spring,则可以使用从fs1到弹簧后端识别的'uri'的ajax调用,例如bs1。现在,服务bs1可以调用s1。

此处的图示:http://i.stack.imgur.com/2lTxL.png

代码:

$.ajax
({
 type: "POST",
 uri:/json/<methodName> 
 data: $('#Form').serialize(),
 success: function(response)
 {
  //handle success here
 },
 error: function (errorResponse)
 {
   //handle failure here
 }
})

答案 3 :(得分:0)

你可以通过自己充当表单目的地的代理来解决这个问题(即让表单提交给你的服务器,然后激活正常的HTTP请求并返回响应),或者让表单访问页面仅限HTTP。

答案 4 :(得分:0)

如果您不需要实际重定向到不安全页面,则可以提供一个Web服务(已通过身份验证),该服务会为您发出请求并返回数据。

例如: 在经过身份验证的页面中,您可以通过https调用您创建的Web服务doInsecure.action。然后doInsecure.action向不安全页面发出手动POST请求并输出响应数据。

答案 5 :(得分:0)

你应该能够使用开源项目Forge做到这一点,但这听起来有些过分。 Forge项目提供了一个可以执行跨域请求的JavaScript接口(和XmlHttpRequest包装器)。底层实现使用Flash来启用跨域(包括http&lt; =&gt; https)通信。

http://github.com/digitalbazaar/forge/blob/master/README

因此,您将通过https从服务器加载Forge JavaScript和swf,然后通过http执行基于Forge的XmlHttpRequest来执行POST。这样可以避免在服务器上进行任何代理工作,但同样,这可能比仅通过https支持POST更有用。此外,这里的假设是,在发布的表单中没有任何机密信息。