asp.net - regresar - deshabilitar la cache y el boton atras del navegador
No compartir sesión y evitar los botones de navegación en el navegador al abrir la ventana de la aplicación (3)
Estamos utilizando el código de VBScript para abrir la ventana de la aplicación y evitar que los usuarios tengan navegación hacia adelante / atrás al abrir la ventana de IE8 .
Este es el código usado.
Set WshShell = CreateObject("shell.application")
Set IE=CreateObject("InternetExplorer.Application")
IE.menubar = 1
IE.toolbar = 0
IE.statusbar = 0
''here we open the application url
IE.navigate "http://www.google.com"
IE.visible = 1
WshShell.AppActivate(IE)
Esto funciona bien, sin embargo, el problema es que si el usuario abre varias ventanas, las cookies de sesión se comparten a través de las ventanas.
Para esto también hay una solución que podemos usar la opción nomerge al abrir el IE
WshShell.ShellExecute "iexplore.exe", " -nomerge http://www.google.com", null, null, 1
Ahora queremos que ambas opciones estén disponibles. es decir, el usuario no debería poder navegar hacia adelante / atrás y, además, si se abren dos ventanas, los datos no deberían compartirse.
No pudimos lograr que ambas cosas funcionaran juntas.
Además, no queremos ningún modo de pantalla completa (es decir, después de presionar F11)
¿Alguien puede proporcionar la solución?
Gracias por adelantado.
Por lo que entiendo, las cookies se establecen por instancia. Varias ventanas del navegador seguirán siendo la misma instancia.
Es posible que pueda pasar una especie de parámetro de identificación que el programa rastrea, pero el navegador no. De esa forma, independientemente de cómo se ejecute el programa, tendrá su propia ID de "sesión".
Creo que puedes hacer esto con javascript y leerlo usando un campo oculto asp.net. Esto podría darle la singularidad que está buscando.
<asp:HiddenField ID="HiddenFieldSessionID" runat="server" />
protected void Page_Load(object sender, EventArgs e)
{
HiddenFieldSessionID.Value = Session.SessionID;
}
<script type="text/javascript">
function ShowSessionID()
{
var Hidden;
Hidden = document.getElementById("HiddenFieldSessionID");
document.write(Hidden.value);
}
</script>
La solución mencionada en el enlace respondido por patmortech no es perfecta, ya que las cookies aún se comparten . Así que utilizamos la opción -nomerge en la variable AppToRun, que crea dos procesos cuando el usuario abre la aplicación dos veces en una sola máquina.
En IE8 si se abren dos exploradores de Internet, se fusionan en un solo proceso, por lo que la opción -nomerge que abre las instancias de IE8 en los procesos de diferencia.
On Error Resume Next
AppURL = "http://www..com"
AppToRun = "iexplore -nomerge"
AboutBlankTitle = "Blank Page"
LoadingMessage = "Loading ..."
ErrorMessage = "An error occurred while loading . Please close the Internet Explorer with Blank Page and try again. If the problem continues please contact IT."
EmptyTitle = ""
''Launch Internet Explorer in a separate process as a minimized window so we don''t see the toolbars disappearing
dim WshShell
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run AppToRun, 6
dim objShell
dim objShellWindows
set objShell = CreateObject("Shell.Application")
set objShellWindows = objShell.Windows
dim ieStarted
ieStarted = false
dim ieError
ieError = false
dim seconds
seconds = 0
while (not ieStarted) and (not ieError) and (seconds < 30)
if (not objShellWindows is nothing) then
dim objIE
dim IE
''For each IE object
for each objIE in objShellWindows
if (not objIE is nothing) then
if isObject(objIE.Document) then
set IE = objIE.Document
''For each IE object that isn''t an activex control
if VarType(IE) = 8 then
if IE.title = EmptyTitle then
if Err.Number = 0 then
IE.Write LoadingMessage
objIE.ToolBar = 0
objIE.StatusBar = 1
objIE.Navigate2 AppURL
ieStarted = true
else
''To see the full error comment out On Error Resume Next on line 1
MsgBox ErrorMessage
Err.Clear
ieError = true
Exit For
end if
end if
end if
end if
end if
set IE = nothing
set objIE = nothing
Next
end if
WScript.sleep 1000
seconds = seconds + 1
wend
set objShellWindows = nothing
set objShell = nothing
''Activate the IE window and restore it
success = WshShell.AppActivate(AboutBlankTitle)
if success then
WshShell.sendkeys "% r" ''restore
end if
Vea las respuestas para esta pregunta muy relacionada: Inicie Internet Explorer 7 en un nuevo proceso sin barras de herramientas . Hay un par de opciones viables, una con Powershell y otra con VBScript.