4

在构建通过 3rd 方服务器重定向以进行身份​​验证的登录系统时,我在 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. 用户的浏览器对https://secure.3rdpartyserver.ca/login/login.aspx?WSLR= {加密的登录参数,包括重定向回的 URL}执行 GET 请求,并收到返回到http://www 的 302 重定向。 myserver.com/login.aspx?userID= {number}&sessionId={number}&impersonateId={number}
  6. (Firefox/Chrome) 用户的浏览器对http://www.myserver.com/login.aspx?userID= {number}&sessionId={number}&impersonateId={number}执行 GET 请求,并收到 302 重定向到http: //www.myserver.com/(并清除在步骤 1 中设置的 cookie。)
  7. (Firefox/Chrome) 用户的浏览器对http://www.myserver.com/进行 GET 请求,最终获得用户首先想要的 HTML 页面。

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

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

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

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

4

0 回答 0