asp.net - 当我期望 200 OK 时为什么会出现 302 重定向响应
问题描述
TLDR
我受雇维护的网站在两个地方处理安全性:web.config 表单身份验证,以及通过检查 MasterPage 中代码隐藏中的会话 cookie。因此,更改安全细节,例如使某些页面无需登录即可访问,需要在both
某些地方进行更改。忘记一个,网络开发工具中会发生奇怪的事情......
我的网站运行良好,但留下的小问题让我感到困惑。它使用Forms身份验证,但根目录下的所有文件都不受限制;只有一些目录deny users=?
在本地 web.config 中。尽管如此,在登录之前无法访问根目录中的 asp 页面,并以302 Found, Redirect
.
这是根目录中 web.config 的一部分:
<authentication mode="Forms">
<forms name="MYWEBAPP.ASPXAUTH" loginUrl="~/Welkom.aspx"
protection="All" timeout="181" slidingExpiration="true" path="/"/>
</authentication>
并且没有<authorization>
部分。
应该允许用户在登录之前访问 /Cookies.aspx 之类的页面,但是使用 FireFox F12 开发工具的选项卡网络,我看到响应为 302,然后重定向到 /Login.aspx。
这导致两个问题:
- 为什么是 302,而不是简单的 200 OK 并显示 Cookies 页面?
- 为什么要去 /Login.aspx 而不是 /Welkom.aspx?
我承认 Welkom.aspx 在这里可能看起来很奇怪,但它多年来一直运行良好,并且Response.Redirect("/Login.aspx")
如果查询参数中有一个合适的 url,它就会起作用。但是我检查了 Page_Load() 中的调试器断点,在上述问题中,Welkom.aspx.cs 没有被访问,所以 IIS(Expr) 不知何故直接进入 /Login.aspx,很奇怪。
解决方案
问题不在于 HTTP 是如何工作的,而在于我自己在 MasterPage 代码隐藏中的某处称为 Response.Redirect() 的代码。当你的代码库变得越来越大时,这种人为错误就会蔓延。所以从这个问题中没有什么技术可以学习的。
推荐阅读
- bash - 无法在 Mac 上安装 miniconda3
- jquery - 页面调用函数后的jquery .load()
- java - 在后台从 Android ViewModel 调用方法
- c - 中断上下文中的 spin_lock_irqsave()
- jquery - dom 解析器忽略强标签
- java - Android:onItemClick 和 onItemLongClick 不响应
- angular - 为 ts 项目运行声纳扫描仪时出错
- javascript - Javascript h ref 未正确匹配
- oop - Web 开发的任何方面是否包括 oop
- android - 在 Google Play 商店上发布应用程序后,奇怪的锁定错误成为