• HOME
  • DOCS
  • WTF
  • TECH
  • LIFE
  • PAGES
    • ARCHIVE
    • TAGS
    • ABOUT
    • FRIENDS
    • RSS
  • TOOLS
    • GEO
    • RANDOM()
    • GOO.GL
    • CSS HEART
Aj's Blog

记录时间溜走的瞬间和折腾过的那些事

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小结
上一篇:   windows下的dig 和 常见问题解决方案
暂无评论

Cancel reply