2010-05-14 35 views
0

我有一個服務器上的asp.net應用程序。在那裏,我已經添加了服務器端代碼在Page_Load中:熱在asp.net中獲取自定義http-header?

Response.AddHeader("key", "password-key-from-hotel"); 

在客戶端,我有一個表格:

<form ... action="www.link-to-another-domaint" > 
    <input type="hidden" id="asd" value="fgh" > 
    .... 
</form> 
<script type="text/javascript"> 
    document.forms[0].submit(); 
</script> 

然後在其他領域 - 還有我的其他應用 - 我「M試圖通過這個代碼來獲取hedaer‘關鍵’:

Request.Headers["key"].ToString(); 


但有沒有這樣的標題。是否有desicion?我的錯誤在哪裏?

+0

我想使Credentails像安全訪問Web服務一樣,這就是爲什麼我需要這個自定義HTTP標頭。 – 2010-05-14 13:00:31

回答

0

據我瞭解,您需要請求字段,而不是標題。嘗試:

Request["asd"] 
+0

不,我需要得到值爲「password-key-from-hotel」的標題「key」。 – 2010-05-14 13:22:13

+0

@ Sirius Lampochkin - 你打算如何請求瀏覽器發送額外的頭文件?我不認爲這是可能的。 – Andrey 2010-05-14 19:47:24

0

您正在從服務器端添加http標題,然後嘗試從客戶端發佈表單。

所以,你失去了標題。 AFAIK,你不能通過表單提交從客戶端添加http頭文件(作爲一個exe文件可能是XHR和其他插件;但是看起來,你的文章是跨域的,所以Ajax將不起作用)。

我不明白這樣做的全部原因,但將自定義頁眉從一頁傳遞到另一頁的最簡單方法是使用Server.Transfer方法。

來源頁面:

Response.AppendHeader("key", "password-key-from-hotel"); 
Server.Transfer("www.link-to-another-domain"); 

目標頁面(甚至另一個域):

string key = Request.Headers["key"]; 

這應該工作。但Server.Transfer方法有它自己的limitations

+0

所以...有沒有辦法將一個域的自定義http-header發送給anoother? – 2010-05-14 13:52:10

+0

@ Sirius Lampochkin:是的,服務器端表單,服務器端文章,然後重定向/傳輸到目標頁面。 – Alex 2010-05-14 13:56:49

+0

@ Sirius Lampochkin:使用隱藏輸入傳遞它 – Andrey 2010-05-14 19:51:09