将特定数据转换为HTTP GET请求
我试图实现一个身份验证机制,其中每个浏览器选项卡可能以不同的用户身份登录。
这是这个系统的规则:
我到目前为止所尝试的是:
  对私有和公共令牌使用cookies :这不起作用,因为服务器无法知道要查找哪个cookie。如果用户从选项卡中单击链接,请求会将所有Cookie发送到所有选项卡,并且服务器无法知道链接上点击了哪一个。 
  在sessionStorage存储专用标记:这不起作用,因为当用户单击链接时,无法指定应与HTTP GET请求一起发送的自定义标头。 
使用AJAX请求页面,然后使用数据URI导航到内存中的页面:出于安全原因,Internet Explorer不允许将HTML URI内容用于HTML内容。 请参阅http://msdn.microsoft.com/en-us/library/cc848897%28v=vs.85%29.aspx
  使用<form method="get" enctype="multipart/form-data">并使用隐藏字段传递令牌:enctype =“multipart / form-data”仅支持POST。 
  使用<form method="post" enctype="multipart/form-data">并使用隐藏字段传递令牌:理论上,这应该可行,但现在如果用户使用后退/前进按钮。 
  使用AJAX请求页面,然后使用document.open(); document.write(); document.close()重写当前页面document.open(); document.write(); document.close() document.open(); document.write(); document.close()  document.open(); document.write(); document.close() 。  我尝试了https://stackoverflow.com/a/4404659/14731和http://forums.mozillazine.org/viewtopic.php?p=5767285&sid=d6a5a2e8e311598cdbad124e277e0f52#p5767285,并且在这两种情况下新的<head>块永远不会被执行。 
有任何想法吗?
好的,在经历了许多不同的迭代之后,下面是我们结束的实现:
变量
publicToken , nextTabId 。 privateToken , tabId 。 publicToken,privateToken
publicToken是所有选项卡上最后一次登录操作返回的令牌。 privateToken是当前标签上次登录操作返回的标记。 tabId
tabId的标记唯一标识。 nextTabId是一个可通过所有选项卡访问的数字。 nextTabId创建一个新的nextTabId并递增其值。 tabId的值可以是“com.company.Tab X ”,其中X是nextTabId返回的nextTabId 。 登录/注销
privateToken和publicToken使用由服务器返回的认证令牌覆盖。 privateToken和publicToken在浏览器端,并privateToken在服务器端。  我们不会删除服务器端的publicToken 。 privateToken所有标签也会被注销。  任何使用不同令牌的选项卡都不会受到影响。 privateToken标签?  当您在新窗口或选项卡中打开链接时,它会继承父标签的privateToken 。 publicToken在服务器上,以注销标签privateToken X, publicToken Y就应该引起标签privateToken y以得到注销(这是不可取的)。 在页面加载
tabId查询参数附加到该URL。  参数值等于tabId的值。 tabId URL参数,以便用户可以与他们的朋友共享链接( tabId是用户特定的并且不能共享)。 tabId cookie(更多信息在下面)。 点击链接时
tabId cookie并遵循链接。 tabId的值,并且其值等于privateToken的值 当服务器收到请求时
tabId参数,则将浏览器重定向到GetTabId.html?referer=X ,其中X是当前URL。 tabId存在但认证令牌无效或过期,则将浏览器重定向到登录屏幕。 GetTabId.html
privateToken ,复制publicToken到privateToken 。 privateToken和publicToken是不确定的,重定向到登录页面。 referer的URL参数,该参数指示成功时重定向的位置。 privateToken ,则将tabId参数附加到referer页面并将其重定向回来。 window.location.replace()从浏览器历史记录中删除GetTabId.html 。 为什么我们要继续删除/添加Cookie?
tabId cookie,那么每次标签发出请求时,所有其他标签的cookie也会发送。 已知的问题
tabId 。  因此,它获取重定向到GetTabId.html而不是实际页面的页面的源代码。 GetTabId.html页面重新加载(客户端重定向到GetTabId.html并返回到原始页面)。 对长期实施细节抱歉,但我找不到更简单/更短的解决方案。
链接地址: http://www.djcxy.com/p/21993.html