簡體   English   中英

如何將數據從HTTPS頁面發布到HTTP頁面

[英]How to POST data to an HTTP page from an HTTPS page

我知道這是一個漫長的過程,但是我想我還是會問這個問題。

我有一個HTTPS頁面,並且正在動態創建表單。 我想將表單發布到HTTP頁面。 在瀏覽器沒有彈出警告的情況下,這可能嗎? 在IE8上執行此操作時,收到以下消息:

您是否只想查看安全交付的網頁內容

本質上,我是在問問題1554237的逆。

可悲的是,我知道從HTTPS發布到HTTP時絕對沒有辦法不被警告。 如果您安全地提供表單,瀏覽器也希望安全地提交數據。 如果還有其他可能的話,這會讓用戶感到驚訝。

不,不能做。 我們的好朋友IE總是會彈出該警告。

如果您編寫自己的后端服務,則有一種方法可以做到這一點。 因此,假設您要使用前端服務fs1將HTTP請求發布到s1。

如果使用Spring,則可以使用從fs1到Spring后端可識別的'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
 }
})

您可以通過自己充當表單目標的代理來解決此問題(即讓表單提交到您的服務器,這又會觸發正常的HTTP請求並返回響應),或者僅通過HTTP訪問包含表單的頁面。

如果您不需要實際重定向到不安全的頁面,則可以提供一個Web服務(已認證),該服務為您觸發請求並返回數據。

例如:在經過身份驗證的頁面上,調用通過doInsecure.action作為Web服務創建的doInsecure.action 然后, doInsecure.action向不安全的頁面發出手動POST請求,並輸出響應數據。

您應該能夠使用開源項目Forge來做到這一點,但這聽起來有些過分。 Forge項目提供了一個JavaScript接口(和XmlHttpRequest包裝器),可以執行跨域請求。 基礎實現使用Flash啟用跨域(包括http <=> https)通信。

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

因此,您可以通過https從服務器上加載Forge JavaScript和swf,然后通過HTTP執行基於Forge的XmlHttpRequest來進行POST。 這將使您不必在服務器上進行任何代理工作,但是同樣,它可能比僅支持基於HTTP的POST還要工作更多。 同樣,這里的假設是,所發布的表單中沒有任何機密信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM