默认情况下发送BASIC auth,而不是等待HTTP 401
我有一个Web服务,要求BASIC身份validation标头出现在请求中,否则服务将返回HTTP 401(未经授权)。 这样做 – 当挑战回来时,浏览器(在这种情况下,Chrome)弹出并要求提供凭据。 然后保存它们以备将来请求。
我的问题是,现在对服务的每个后续请求都有两个请求 – 一个没有auth(接收401),然后浏览器立即在头中回复正确的auth。
有没有办法强制浏览器(可能通过一个特殊的标题)提供凭据,而不必每次都被Web服务明确询问?
我不相信有可能强制浏览器抢占401.当服务请求发出时,服务响应HTTP 401并添加WWW-Authenticate Basic标头以及我猜测,一个领域(你可以定义)。
值得一看RFC的基本身份validation,详细介绍了如何实现基本身份validation标准。 http://www.ietf.org/rfc/rfc2617.txt
您还可以考虑实现自己的HTTP模块,它可以为您的应用程序提供更大的灵活性,以及如何处理基本身份validation。 这允许您为Authenticate和End Request事件注册事件处理程序,并更清楚地说明您的服务将如何处理基本身份validation。 有关这方面的入门知识,请访问asp.net网站。 http://www.asp.net/web-api/overview/security/basic-authentication
如果您的服务使用基于您的应用程序身份validation的不同身份validation(例如,当应用程序配置为表单身份validation时,服务将仅使用基本身份validation),而不是使用HTTP模块,则允许您有条件地使用基本身份validation。 我通常在这种情况下注册我的处理程序,如下所示:
AuthenticationSection config = (AuthenticationSection)WebConfigurationManager.GetSection("system.web/authentication"); if(config.Mode == AuthenticationMode.Forms) { module.Authenticate += OnEnter; context.EndRequest += OnLeave; }
- 如何使用Code First在ASP.NET MVC 5 Identity 2.0中的AspNetUser表(Id列)的Customer表(CreatedBy列)中添加外键
- 将文件从MVC 5下载到Angular 2
- LINQ to Entities中的临时表
- 将多行gridview放入编辑模式
- 使用OpenXML SDK w / ASP.NET流式传输内存Word文档导致“损坏”文档
- 这是否意味着如果不实现IDisposable,则不需要手动清除对象?
- 在C#GET请求中将JSON数据转换为查询字符串
- Microsoft.Office.Interop是否可以安全地用于(文件转换)网站?
- 防止以编程方式缓存脚本