HTTP 302 在 IE 中失败的服务器之间重定向,在 FF 和 Chrome 中工作

2023-12-10

在构建通过第三方服务器重定向进行身份验证的登录系统时,我在 IE 中遇到空白屏幕。 (据说浏览器在失败时会在我的服务器上请求返回页面。)

登录是这样的:

  1. 用户请求http://www.myserver.com/并返回 302 重定向到http://www.myserver.com/login.aspx以及一些存储初始请求和初始 URL 中的 GET/POST 参数的 cookie。
  2. 用户的浏览器请求http://www.myserver.com/login.aspx返回 200 OK,并给出一个带有用户名和密码字段的 HTML 页面。
  3. 用户将 HTML 表单作为 POST 提交到http://www.myserver.com/login.aspx并收到略有不同的 200 响应(此 HTML 页面有一个下拉菜单,可从步骤 2 中输入的用户名/密码有权登录的用户列表中进行选择,(对于以经理身份登录的助理。))
  4. 用户为下拉列表选择一个值,然后再次将页面作为 POST 提交到http://www.myserver.com/login.aspx。这次他们收到 302 重定向到https://secure.3rdpartyserver.ca/login/login.aspx?WSLR={加密的登录参数,包括重定向回的 URL}
  5. 用户的浏览器执行 GET 请求https://secure.3rdpartyserver.ca/login/login.aspx?WSLR={加密的登录参数,包括要重定向回的 URL} 并收到 302 重定向http://www.myserver.com/login.aspx?userID={number}&sessionId={number}&impersonateId={number}
  6. (Firefox/Chrome) 用户的浏览器执行 GET 请求http://www.myserver.com/login.aspx?userID={number}&sessionId={number}&impersonateId={number} 并收到 302 重定向到http://www.myserver.com/(并清除步骤 1 中设置的 cookie。)
  7. (Firefox/Chrome) 用户的浏览器执行 GET 请求http://www.myserver.com/最终得到用户最初想要的HTML页面。

然而 IE9 中的第 6 步似乎搞砸了:

  • 如果我根本不监控它,我会在第 6 步看到一个空白的白屏,并显示 URL 栏http://www.myserver.com/login.aspx?userID={number}&sessionId={number}&impersonateId={number}。我的login.aspx 的Page_Load 方法从未在服务器上调用。
  • 如果我按 F12 并使用内置网络捕获功能,它会显示直到第 6 步为止的所有内容,然后显示 GET 请求http://www.myserver.com/login/login.aspx?WSLR={加密的登录参数,包括要重定向回的 URL}(一个不存在的页面,是步骤 5 和 6 中的 URL 的混合体。)当我尝试在那里创建一个页面时,它从未被调用。浏览器仍然显示空白屏幕,URL 为http://www.myserver.com/login.aspx?userID={number}jsessionId={number}模拟={number}通过。我的login.aspx Page_Load 方法从未在服务器上调用。
  • 如果我在 IE 中执行此请求时运行 HttpAnalyizer,整个过程就像在 Firefox/Chrome 中一样。

我尚未在其他浏览器中进行测试,因为该系统仍在我的本地主机上以调试模式运行。这也可能会引入错误,因为 localhost 是 Intranet 区域,而第 3 方服务器是 Internet 区域(尽管它应该可以工作)。有没有办法让 localhost 在 Internet 区域中运行?

如果您点击刷新按钮或单击地址栏并在白屏时按 Enter 键,登录将正常进行,就好像它一开始就没有中断一样。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP 302 在 IE 中失败的服务器之间重定向,在 FF 和 Chrome 中工作 的相关文章

随机推荐