< sessionState cookieless =“ AutoDetect” POST请求失败/>已设置
考虑以下情况:
Web服务器正在运行带有
<sessionState cookieless="AutoDetect" />
的.NET应用程序。
客户端使用简单的HttpWebRequest
(无cookie)向其发送数据。
这个看似简单的案例导致重大失败。
由于.NET无法确定请求代理(HttpWebRequest
)是否支持cookie,因此它会响应POST请求,并将302 Found重定向到同一位置:
响应中名为AspxAutoDetectCookie
的cookie
转发位置中名为AspxAutoDetectCookie
的查询参数
然后请求代理请求新位置,HttpWebRequest
。当.NET在查询字符串中看到AspxAutoDetectCookie
时,它知道这是一个重新请求,它可以通过查看名为AspxAutoDetectCookie
的cookie是否在请求标头中来确定是否支持cookie。
问题是,大多数请求代理(Web浏览器,HttpWebRequest
)将302 Found视为303 See Other,并将重新请求设置为GET,而不管原始HTTP方法如何!在初始POST请求中发送的任何数据都不会被转发。
正确的响应应该是307临时重定向,它不会更改请求方法。 (对位置X的POST请求重定向到位置Y的POST请求。)
有没有办法在.NET中更改此行为,以便POST请求不被销毁?
有关3xx重定向的信息
没有找到相关结果
已邀请:
4 个回复
需复
附加到所有POST请求中。 这样,ASP.NET将永远不会重定向请求,我们可以完全避开302 vs 307问题。如果cookie被嵌入到请求中,ASP.NET将检测到支持cookie,如果没有嵌入cookie,它将假定它们不是。
艰管垮淮
帆攀缺锯欧
递劝臼类洪