2010-10-16 49 views
1

我需要將.NET站點中的字符串發佈到位於同一服務器(不同虛擬目錄)上的經典ASP站點。將表單從一個HTTPS發佈到另一個HTTPS站點導致安全警報

的https://example.com/DOTNETSite/Sender.aspx

的https://example.com/ClassicASP/SomeFolder/Target.asp

Target.asp頁面有3種方式來處理輸入數據:

  1. 表單提交
  2. 查詢字符串
  3. 頭文件

我無法在查詢字符串中傳遞我的數據。所以這個選項已經結束了。我嘗試通過在服務器端構建一個表單,並吐出JavaScript代碼來執行form.submit(),從而使用Form post方法。但是這導致Internet Explorer爲用戶拋出安全警報。我們想要避免這種情況。請讓我們知道什麼是克服這種情況的最佳方法。萬分感謝。

+0

你有任何混合內容的地方?其他瀏覽器的行爲如何?例如,Firefox的HTTP頁面警告屬性保持爲'true':'security.warn_entering_secure','security.warn_leaving_secure':您可以通過在地址欄中輸入about:config來設置它們。 – Bruno 2010-10-16 20:55:10

回答

0

現在你正在做的:

您的服務器---->客戶端/瀏覽器---->其服務器

相反,你應該使用:

您的服務器---->您的客戶端/瀏覽器---->您的服務器---->他們的服務器

這就是(如果它不夠清楚),請將表單發送到您自己的服務器。 當您的服務器收到表單時,它應該將其發送到目標服務器。

在基本的層面上,這是有效的。但是,如果用戶是應該被記錄在第二服務器上,你可能會得到問題等

我會盡力來說明PHP的例子:

文件:form.html

<form action="send.php" method="post"> 
    .... 
</form> 

文件:send.php

<?php 
    $url='https://example.com/ClassicASP/SomeFolder/Target.asp'; 
    // create new cur connection 
    $ch=curl_init(); 
    // tell curl target url 
    curl_setopt($ch, CURLOPT_URL, $url); 
    // tell curl we will be sending via POST 
    curl_setopt($ch, CURLOPT_POST, true); 
    // tell it not to validate ssl cert 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    // tell it where to get POST variables from 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST); 
    // make the connection 
    curl_exec($ch); 
    // close connection 
    curl_close($ch); 
?> 
+0

感謝您的回覆。請,你能對此更具體嗎?據我瞭解,通過javascript做表單發佈是一個錯誤的選擇。正確?只是一個fyi,我需要這個在asp中。net c# – wortex 2010-10-16 20:24:57

+0

在某些情況下(例如通過Shibboleth的SSO中的一個IdP),「您的服務器---->您的客戶端/瀏覽器---->您的服務器---->它們的服務器」是不可取的和「你的服務器---->你的客戶端/瀏覽器---->他們的服務器」,否則第二臺服務器可能無法直接驗證瀏覽器,第一臺服務器可能實際上是一箇中間人。發佈到另一個HTTPS通常沒有警告地工作。 – Bruno 2010-10-16 20:52:03

+0

@布魯諾,這就是爲什麼我說中間人可能會引入其他問題,但是,正如我所說的,它在一個基本的層面上起作用。 @wortex,我所說的是,不是讓用戶發送請求到目標服務器,而是讓你自己的服務器發送目標請求 - 當然,首先從用戶表單接收到所需的數據。 – Christian 2010-10-17 08:13:29

相關問題