Ant*_*ton 7 .net asp.net cookieless http-status-code-302 http-status-code-307
考虑以下情况:
<sessionState cookieless="AutoDetect" />.HttpWebRequest(无cookie)将数据发布到它.这个看似简单的案例导致重大失败.
由于.NET无法确定请求代理(HttpWebRequest)是否支持cookie,因此它会响应POST请求,并将302 Found重定向到同一位置:
AspxAutoDetectCookie响应中指定的cookieAspxAutoDetectCookie在转发位置中命名的查询参数然后请求代理请求新位置,这样HttpWebRequest做.当.NET AspxAutoDetectCookie在查询字符串中看到时,它知道这是一个重新请求,它可以通过查看命名的cookie AspxAutoDetectCookie是否在请求标头中来确定是否支持cookie .
问题是,大多数请求代理(Web浏览器HttpWebRequest)将302 Found视为303 See Other并将重新请求设置为GET,而不管原始HTTP方法如何!在初始POST请求中发送的任何数据都不会被转发.
正确的响应应该是307临时重定向,它不会更改请求方法.(对位置X的POST请求重定向到位置Y 的POST请求.)
有没有办法在.NET中更改此行为,以便POST请求不被销毁?
我能看到的唯一解决方案是附加AspxAutoDetectCookie=1到所有 POST 请求。
这样,ASP.NET 就永远不会重定向请求,我们可以完全避开 302 与 307 问题。如果请求中嵌入了 cookie,ASP.NET 将检测是否支持 cookie,如果没有嵌入 cookie,则假定不支持。
| 归档时间: |
|
| 查看次数: |
2387 次 |
| 最近记录: |