WebAPI.请求(Request)的参数(Parameter)里包含特殊字符(#等)的正确处理方式 从客户端xx中检测到有潜在危险的Request.Form值...

 

 

事故现场

报错"从客户端 中检测到有潜在危险的Request.Form值"

//后台代码
namespace Test
{
    [RoutePrefix("TestClass")]
    [EnableCors("*", "*", "*")]
    public class TestClassController
    {
 
        [HttpGet]
        [Route("GetByName/{userId}/{userName}")]
 
        public string GetByName(int userId ,string userName ="")
        {
            return null;
        }
    }
}
 
//前台代码
 //注意userName含有特殊符号
$.ajax({url:" http://api.test.com/TestClass/GetByName/0/ encodeURIComponent(':#@#')",async:false});
 

解决方案.Mine

修改为

总结.

1.如果请求(Request)的参数(Parameter)里包含特殊字符,记得将参数值编码
encodeURIComponent(SPECIAL_VALUE) 
2.如果含有特殊符号的,比如":",你放到了路径上,
你编码应该也不好使.那就将含有特殊符号的,别放到路径上,
可以放到?的参数上进行传递...

 

解决方案.Other

可以通过将验证模式设置为ASP.NET之前的版本。
具体步骤是在web.config中加入以下配置:

<httpRuntime requestValidationMode=”2.0″ />

设置了请求模式后,再设置

<system.web>
<pages validaterequest=”false”/>
</system.web>
 
MVC框架中,在控制方法前加入:

[ValidateInput(false)]属性。

 

 

扩展:

.NET Web API 路由与URL的困惑...(如果将参数放到路径上,例如:http://www.baidu.com/getById/1,那么这个"1"是参数还是路径呢?)我还专门去搜了下URL组成部分...

 

参考:

1.解决“检测到有潜在危险的Request.Form值”

2.请求(Request)的参数(Parameter)里包含特殊字符(#等)的正确处理方式

 

 

x

转载于:https://www.cnblogs.com/love-zf/p/10961533.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值