[英]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.