首页 新闻 会员 周边

C#如何设置一般处理程序只能通过post方法请求?

0
悬赏园豆:20 [待解决问题]

最近在维护一个项目,是asp.net 2.0 时代的项目,里面使用到一般处理程序+ajax来处理,我们做升级,发现里面很多处理都是采用一般处理程序+ajax的方式来处理,但是比较郁闷的时候 ajax 请求方式都是get 请求,采用这种方式,请求的参数信息容易暴露,所以我就想设置ajax 的请求方式 为post ,不知道各位有没有遇到这样的问题?网上的方案根本就是瞎扯,不能从根本上解决问题。

mczxmin的主页 mczxmin | 初学一级 | 园豆:196
提问于:2017-11-19 13:34
< >
分享
所有回答(7)
0

你可能是低质量文章的受害者.

你要做的事情的可以实现的.但你要做这个事情的理由是很傻的.

吴瑞祥 | 园豆:29449 (高人七级) | 2017-11-19 13:37

嗯,是的,这个理由是比较二,项目升级,如果用get请求的话,后续进行系统安全检查这块会通不过,到时候又得修改,所以现在刚开始维护的话,就想把这块给处理了。

支持(0) 反对(0) mczxmin | 园豆:196 (初学一级) | 2017-11-19 13:46

@mczxmin: 照着你说的改就行.在处理里判断如果是post就返回错误

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-11-19 13:50
0

get或者post请求方式根本就不是用来隐藏提交信息,两者都是明文的,这两种只是语义上的差别而已。

Daniel Cai | 园豆:10424 (专家六级) | 2017-11-19 14:01
0
public void ProcessRequest(HttpContext context)
{
    if (context.Request.HttpMethod != "POST")
    {
        context.Response.StatusCode = 403;
        return;
    }
    //..
}
dudu | 园豆:31003 (高人七级) | 2017-11-19 14:56
0

只要不是高强度加密,都是裸体。

get和post在通讯上没有区别,只是http语义描述区别。

花飘水流兮 | 园豆:13560 (专家六级) | 2017-11-19 21:54
0

先把所有的ajax请求都改成post,在pr方法里面判断一下httpmethod,是post就执行相应的逻辑,否则就直接返回错误信息。

守望星空的那一边 | 园豆:206 (菜鸟二级) | 2017-11-20 09:13
0

如果目的是为了信息不被泄露,那么只有一个办法,就是在服务器上配置一个域名证书,也不贵,一年几十块钱,阿里貌似还有免费的。

如果因为其它目的想改为post,参照@dudu的办法,在他给你的//..地方改post处理业务的机制,然后将所有前端的ajax中的method改为"post",同时,如果参数是写在url里面的,还要拿出来写在data里面。我觉得如果不是因为数字有特殊字符或参数超长导致get的方式满足不了而不得不改为post的话,就不要改了,没必要。

ensleep | 园豆:1682 (小虾三级) | 2017-11-21 09:30
0

WEB 所有内容都是透明的,通过http访问 的数据,都能看得到。改https吧。

liukuan | 园豆:201 (菜鸟二级) | 2017-11-23 11:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册