2010-04-20 132 views
1

我知道这是一个很长的过程,但我想我仍然会问这个问题。如何从HTTPS页面将数据发布到HTTP页面

我有一个HTTPS页面,并且正在动态创建一个表单。我想将表单发布到HTTP页面。这可能没有浏览器弹出警告?当我在IE8上这样做时,我收到以下消息:

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

本质上讲,我问的问题1554237.

+1

标题与问题相矛盾。您是否从HTTPS发布到HTTP或HTTPS?错误信息至少与后者相矛盾。 – BalusC 2010-04-20 18:18:37

+0

你的问题是,我相信,不正确。假设你的意思是“到HTTP”页面.... – jvenema 2010-04-20 18:19:03

+0

不知道为什么你甚至想要这样做,你想做什么?它是不同的域,它是强制ssl? – 2010-04-20 18:20:22

回答

1

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

1

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

+0

如果您尝试使用ajax,会发生什么情况? – zaf 2010-04-20 18:23:26

+0

Ajax将无法工作(在页面底部创建警告),但您可以绕过它,正如我所建议的。 – 2010-04-20 18:34:27

+1

为什么选择倒票?确实,这不可能完成,请参阅@ sblom的帖子。 – Nate 2010-04-20 18:39:05

0

您可以通过充当形式目的地自己的代理解决这个问题(即让表单提交到服务器这反过来又触发一个正常的HTTP请求,并返回响应),或让访问与该页面仅由HTTP形式。

0

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

例如: 从已通过身份验证的页面,您可以拨打doInsecure.action,通过https将其创建为Web服务。然后doInsecure.action向不安全页面发出手动POST请求并输出响应数据。

0

你应该可以使用Forge开源项目来做到这一点,但这听起来像是矫枉过正。 Forge项目提供了一个可以进行跨域请求的JavaScript接口(和XmlHttpRequest包装器)。底层实现使用Flash来启用跨域(包括http < => https)通信。

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

所以,你会从你的服务器通过https载入伪造的JavaScript和SWF,然后做通过HTTP基于锻造,XMLHttpRequest来执行POST。这将使您无需在服务器上执行任何代理工作,但同样,这可能比仅通过https支持POST更有用。此外,这里的假设是,在发布的表单中没有任何保密信息。

1

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

如果你使用Spring,你可以使用从FS1一个AJAX调用由您春季后端承认的“URI”,说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 
} 
})