如何从控制器正确访问 HTTP 标头? (.NET 网络应用程序)
Posted
技术标签:
【中文标题】如何从控制器正确访问 HTTP 标头? (.NET 网络应用程序)【英文标题】:How to properly access HTTP Headers from your controller? (.NET Web App) 【发布时间】:2021-10-27 14:45:09 【问题描述】:我目前正在开发一个 .NET Web 应用程序 (MVC),它的设计目的是让用户在另一个 Web 应用程序中登录该应用程序,然后 IIS 将控制权传递给我的 Web 应用程序(我称之为 SP)。然后 SP 需要访问传递给它的包含从登录页面传递的用户信息的标题。然后使用这些字段将用户添加到数据库以进行日志记录。此行为在 Web 应用主控制器的构造函数中调用:HomeController
,因为我希望它在用户访问页面时运行。
这是我当前的实现:
public HomeController()
try
string ID = Request.Headers.Get("CN userName");
if (ID.Length > 3)
try
ID = ID.Substring(3, 3);
catch
ID = ID.Substring(0, 3);
string firstName = Request.Headers.Get("X-First Name");
string lastName = Request.Headers.Get("X-Last Name");
string email = Request.Headers.Get("X-Mail");
currUser = new User(ID, firstName, lastName, email, "");
catch (Exception e)
currUser = new User(/*Create Default User*/);
User
构造函数处理创建后管理用户所需的方法。但是,当它尝试访问任何标头时,当前部署时会引发错误。我没有很多使用标头的经验,所以我花了几个小时试图在网上找到解决方案,但我没有尝试完成我需要的工作。在解决此问题和正确实施此行为方面,我将不胜感激。
【问题讨论】:
实际抛出的异常是什么?通常你可以使用Request.Headers["Header_Name"]
来访问headers 集合。
【参考方案1】:
我认为您不应该在控制器构造函数中执行此操作(也不确定它是否安全)。
它可能更适合Filter,这将使其更容易重复使用。
【讨论】:
以上是关于如何从控制器正确访问 HTTP 标头? (.NET 网络应用程序)的主要内容,如果未能解决你的问题,请参考以下文章
如何访问 Spring MVC REST 控制器中的 HTTP 标头信息?
如何避免“访问控制允许标头不允许请求标头字段授权”从本地驱动器运行 JavaScript? [复制]