我知道这是一个很长的镜头,但我想我还是会问这个问题。
我有一个HTTPS页面,我正在动态创建表单。我想将表单POST到HTTP页面。如果没有浏览器弹出警告,这可能吗?当我在IE8上执行此操作时,收到以下消息:
Do you want to view only the webpage content that was delivered securely?
基本上,我问的是问题1554237的反转。
答案 0 :(得分:1)
可悲的是,我知道从HTTPS发布到HTTP时绝对没有办法得到警告。如果您安全地提供表单,浏览器也希望安全地提交数据。如果可能的话,它会让用户感到惊讶。
答案 1 :(得分:1)
答案 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更有用。此外,这里的假设是,在发布的表单中没有任何机密信息。