【问题标题】:Why does a Asp.Net HTTP POST cause a 302 Redirect to GET even with EnableSessionState set to False为什么即使 EnableSessionState 设置为 False,Asp.Net HTTP POST 也会导致 302 重定向到 GET
【发布时间】:2021-10-29 18:08:36
【问题描述】:

我有一个从 3rd 方网站到我的 ASP.Net 网站页面的简单 POST 命中。因为 POST 命中没有发送 ASP.NET_SessionId cookie,所以它没有 Session 变量的上下文。为了防止 ASP.Net 服务器使用 GET 方法和附加到 URL 的 ?AspxAutoDetectCookieSupport=1 强制 302 重定向到同一页面,我设置了 EnableSessionState="False" @Page 标签中的strong>。使用 POST 方法,我可以收集正在发布的变量值并更新本地数据库中的记录。

前几天它的工作原理完全一样,现在它再次重定向,我无法获取 POST 附带的变量中的值。在服务器上处理 GET 请求之前,我无法控制代码后面的页面。到那时,所需的 POST 变量早已不复存在。

<%@ Page AutoEventWireup="true" CodeFile="InvoiceUSAePay.aspx.cs"
Inherits="InvoiceUSAePay" Language="C#" EnableSessionState="False" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Invoice USAePay</title> 
    <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR" />
    <meta content="C#" name="CODE_LANGUAGE" />
    <meta content="JavaScript" name="vs_defaultClientScript" />
    <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema" />
</head>
<body>
    Enable <%= state %>
</body>
</html>

当 EnableSessionState="False" 时,为什么帖子会从 POST 重定向到 GET?

【问题讨论】:

    标签: asp.net http-post session-state


    【解决方案1】:

    我终于发现自己做错了什么。

    在 web.config 文件的 属性中,我设置了 cookieless="AutoDetect"。是的,即使您在页面的 标记中设置 EnableSessionState="False",服务器也会“自动检测”cookie。因此 POST 进入时没有会话 cookie,因此服务器使用 GET 操作和 ?AspxAutoDetectCookieSupport=1 参数将浏览器重定向回服务器。

    我已从 AutoDetect 切换到 UseCookies,到目前为止,我的网页一直按预期运行。

    我觉得为遇到此问题的下一个可怜的鞋底记录我的解决方案很重要。当我再次这样做时,我很可能会在不久的将来自己回到这里。

    【讨论】:

      猜你喜欢
      • 2013-07-10
      • 2012-07-04
      • 2020-05-01
      • 2016-09-15
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 2023-03-21
      • 2016-01-17
      相关资源
      最近更新 更多