【问题标题】:Multiple Classic ASP SessionID's when using both AJAX and standard HTML POST requests使用 AJAX 和标准 HTML POST 请求时的多个经典 ASP SessionID
【发布时间】:2010-10-08 03:33:41
【问题描述】:

我正在使用 Classic ASP 和一点 AJAX 将表单的内容发布回 AJAX 表单所在的页面。在 AJAX POST 页面将这些字段之一(具体来说是电子邮件)保存到 Session 变量中。然后用户开始他们的业务 - 可能通过普通 HTTP 再次请求页面。

但是,这会使我的浏览器 (Firefox 3.0.6) 带有两个 ASPSESSIONxxxx cookie - 我假设一个用于 AJAX 请求,一个用于标准 HTTP 调用。

这会导致页面(依赖于会话变量)从已创建的两个中随机选择一个 ASP 会话 ID - 一个设置了会话变量,一个没有设置。

我之前在 PHP 和 Flash 中处理过这个问题,您可以在 PHP 中设置 Session ID,但在 ASP 中不行。

是否有任何特定于 ASP 的方法来抵消这种行为 - 或者我应该放弃并使用 cookie?

【问题讨论】:

    标签: ajax session asp-classic vbscript


    【解决方案1】:

    我认为这里可能还有其他事情。

    我整理了一个简单的示例,我认为该示例正在执行您所描述的操作,并且会话似乎正在运行。

    <%@ LANGUAGE=VBSCRIPT %>
    <% if Request.Form("curid") = "" then %>
    <html>
        <head>
            <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js"></script>
    
            <script type="text/javascript">
                Event.observe(window, 'load', function() {
                    Event.observe($('sessiontest'), 'click', function(event) {
                        Event.stop(event);
    
                        new Ajax.Request( 'test.asp', {
                            method:  'POST',
                            parameters:  {'curid':  $('curid').value},
                            onSuccess:  function(response) {
                                window.location = 'test.asp';
                            },
                            onFailure:  function() {
                                alert('FAIL!');
                            }
                        });
                    });
                });
            </script>
        </head>
        <body>
                <p><input type="text" id="curid" value="<%=Session("curid")%>" /></p>
                <p><a href="#" id="sessiontest">Save ID to Session</a></p>
        </body>
    </html>
    <% 
    else
        Session("curid") = Request.Form("curid")
        Response.write "I was called via POST"
    end if 
    %>
    

    我也是带 FF 3.0.6 的 Windows。

    【讨论】:

      【解决方案2】:

      本,

      我很确定,(虽然我还没有确定)双 asp 会话是分配给同一服务器上多个虚拟主机的工作进程(应用程序池)的结果。您的环境中是否有这种情况?

      我偶然发现了这个页面,因为我正准备调试和部署一个经典的 asp ajax 实现,而这是我想在这样做之前调查的一个问题。

      默认的 ASP 会话行为在几代 Windows 服务器中也发生了变化(但不确定它在 IIS 的 XP/Vista 实现中是如何工作的)。

      我的帖子有点过时了两个月,你解决了这个问题吗?并好奇您正在根据您的情况测试/使用什么服务器环境/IIS。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-06
        • 1970-01-01
        相关资源
        最近更新 更多