IIS6.0及以上版本自定义404页面POST数据时REQUEST_METHOD问题
2013-04-03 TECH HTTP_METHOD IIS POST REQUEST_METHOD 始终为 GET 自定义404页面
之前一直在完善的ASP404框架,遇到一个问题:
通过404实现Url Rewrite,然后解析URI得到模块和方法法,通过Execute和ExecuteGlobal实现动态调用模块和方法。
一切看起来都很完美,在IIS5.1上一切正常。
但是在IIS6和IIS7上测试发现,在rewrite之后的URL里POST数据 REQUEST_METHOD / HTTP_METHOD 始终为 GET,
这让数据提交产生了麻烦,难道又要污染我纯净的URL?
官方查到:http://forums.iis.net/t/1152185.aspx/1 上提到已经出了hotfix解决这个问题。
但是考虑到国内中低端、win2003服务器还是比较多,所以还是要去兼容IIS6
于是在原代码的基础上做了小改动:
1、原来通过jQuery POST json object的方法通过自定义函数joinkv 把object join为一个url串,并在里面追加 &_=_ 和 &method=POST 标志,前者用于截断404 urlwrite 后者用于模块处理。
2、原模块中通过判断 Sys.Server(“HTTP_METHOD”) 的 现在改为 Sys.GET(“method”) 改动量很小
这样就在前后端改动都很少的情况下实现了兼容。
新代码已提交到github欢迎fork:https://github.com/superos/asp404
下一篇: 2013.03-04小结
暂无评论