【问题标题】:Hot to get custom http-header in asp.net?在 asp.net 中获取自定义 http-header 很热门?
【发布时间】:2010-05-14 12:58:12
【问题描述】:

我在一台服务器上有一个 asp.net 应用程序。我在 Page_Load 的服务器端添加了代码:

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>

然后在另一个域上 - 还有我的另一个应用程序 - 我正在尝试通过此代码获取 hedaer“密钥”:

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


但是没有这样的标题。有决定吗?我的错在哪里?

【问题讨论】:

  • 我想在 Web 服务的安全访问中制作类似 Credentails 之类的东西,这就是我需要这个自定义 http-header 的原因。

标签: asp.net response http-headers custom-headers


【解决方案1】:

据我了解,您需要请求字段,而不是标题。试试:

Request["asd"]

【讨论】:

  • 不,我需要获取值为“password-key-from-hotel”的标题“key”。
  • @Sirius Lampochkin - 您打算如何请求浏览器发送额外的标头?我认为这是不可能的。
【解决方案2】:

您正在从服务器端添加 http 标头,然后尝试从客户端发布表单。

所以,你失去了你的标题。

AFAIK,您不能使用表单提交从客户端添加 http 标头(因为可能是 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

【讨论】:

  • 那么...有没有办法将自定义 http-header 从一个域发送到另一个域?
  • @Sirius Lampochkin:是的,服务器端表单,服务器端发布,然后重定向/转移到目标页面。
  • @Sirius Lampochkin:使用隐藏输入传递它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-29
  • 1970-01-01
  • 2018-04-18
相关资源
最近更新 更多