在构建通过第三方服务器重定向进行身份验证的登录系统时,我在 IE 中遇到空白屏幕。 (据说浏览器在失败时会在我的服务器上请求返回页面。)
登录是这样的:
- 用户请求http://www.myserver.com/并返回 302 重定向到http://www.myserver.com/login.aspx以及一些存储初始请求和初始 URL 中的 GET/POST 参数的 cookie。
- 用户的浏览器请求http://www.myserver.com/login.aspx返回 200 OK,并给出一个带有用户名和密码字段的 HTML 页面。
- 用户将 HTML 表单作为 POST 提交到http://www.myserver.com/login.aspx并收到略有不同的 200 响应(此 HTML 页面有一个下拉菜单,可从步骤 2 中输入的用户名/密码有权登录的用户列表中进行选择,(对于以经理身份登录的助理。))
- 用户为下拉列表选择一个值,然后再次将页面作为 POST 提交到http://www.myserver.com/login.aspx。这次他们收到 302 重定向到https://secure.3rdpartyserver.ca/login/login.aspx?WSLR={加密的登录参数,包括重定向回的 URL}
- 用户的浏览器执行 GET 请求https://secure.3rdpartyserver.ca/login/login.aspx?WSLR={加密的登录参数,包括要重定向回的 URL} 并收到 302 重定向http://www.myserver.com/login.aspx?userID={number}&sessionId={number}&impersonateId={number}
- (Firefox/Chrome) 用户的浏览器执行 GET 请求http://www.myserver.com/login.aspx?userID={number}&sessionId={number}&impersonateId={number} 并收到 302 重定向到http://www.myserver.com/(并清除步骤 1 中设置的 cookie。)
- (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(使用前将#替换为@)