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

修改为

$.ajax({url:"http://api.test.com/TestClass/GetByName/0?userName=encodeURIComponent(‘:#@#‘)",async:false});

总结.

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

时间: 2024-11-04 01:54:03

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

从客户端(XXX)中检测到有潜在危险的Request.Form 值

维护别人的某功能模块的时候,页面返回如下错误信息: [HttpRequestValidationException (0x80004005): 从客户端(TextBox1="<?xml version="1.0" ...")中检测到有潜在危险的 Request.Form 值.] 部分错误截图: 直接百度了下, 错误原因:没怎么细看...知道的某位留言补充下(不胜感激). 解决办法: 在web.config添加或补充如下节点内容 --web.config <

从客户端中检测到有潜在危险的Request.Form值 的解决方法

在提交表单时候,asp.net 提示:"从客户端(......)中检测到有潜在危险的 Request.Form 值" .asp.net中的请求验证特性提供了某一等级的保护措施防止XSS攻击,asp.net的请求验证是默认启动的.这个给出各个版本.net的解决方法. asp.net 2.0 通常解决办法 方案一: 将.aspx文件中的page项添加ValidateRequest="false" ,如下: <%@ Page ValidateRequest=&quo

从客户端(content=&quot;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nb...&quot;)中检测到有潜在危险的 Request.Form 值。

从客户端(content="<p>    &nb...")中检测到有潜在危险的 Request.Form 值. 说明: ASP.NET 在请求中检测到包含潜在危险的数据,因为它可能包括 HTML 标记或脚本.该数据可能表示存在危及应用程序安全的尝试,如跨站点脚本攻击.如果此类型的输入适用于您的应用程序,则可包括明确允许的网页中的代码.有关 详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=212874. 异常详细信息:

从客户端(&amp;)中检测到有潜在危险的 Request.Path 值解决方案

出这个问题基本上是在转址字符串中有非法字符“<”,'&'之类的. 方案1: 如果仅仅只是转换页面,传参时出现的问题,可对数据加密: 绑定数据传值时加密 <%#Server.UrlEncode(Eval("UserId").ToString())%> 解密:HttpUtility.UrlDecode(request.QueryString["userid"].Tostrin 方案2: 如果是对数据库数据进行操作时出现此问题,第一.可以在存入数

解决asp.net中“从客户端中检测到有潜在危险的Request.Form值”的问题

在提交表单时候,asp.net 提示:"从客户端(......)中检测到有潜在危险的 Request.Form 值" .asp.net中的请求验证特性提供了某一等级的保护措施防止XSS攻击,asp.net的请求验证是默认启动的.这个给出各个版本.net的解决方法.asp.net 2.0 通常解决办法方案一:将.aspx文件中的page项添加ValidateRequest="false" ,如下:<%@ Page ValidateRequest="fa

asp.net mvc 客户端(&amp;)中检测到有潜在危险的 Request.Path 值。

出现这个错误后,试过 <pages validateRequest="false"> <httpRuntime requestValidationMode="2.0"/> [ValidateInput(false)] 都不ok,经测试只用以下配置就ok了 <httpRuntime requestPathInvalidCharacters="" /> MSDN解释:在请求路径中无效的字符的列表以逗号分隔). 以下

ASP.NET MVC从客户端中检测到有潜在危险的 Request.Form 值

ASP.NET MVC4(Razor)从客户端中检测到有潜在危险的 Request.Form 值 “/”应用程序中的服务器错误. 从客户端(Content=" sdfdddd ...")中检测到有潜在危险的 Request.Form 值. 说明: ASP.NET 在请求中检测到包含潜在危险的数据,因为它可能包括 HTML 标记或脚本.该数据可能表示存在危及应用程序安全的尝试,如跨站点脚本攻击.如果此类型的输入适用于您的应用程序,则可包括明确允许的网页中的代码.有关详细信息,请参阅 ht

从客户端(******)中检测到有潜在危险的 Request.Form 值。

在 提交表单时候,asp.net 提示:"从客户端(......)中检测到有潜在危险的 Request.Form 值" .asp.net中的请求验证特性提供了某一等级的保护措施防止XSS攻击,asp.net的请求验证是默认启动的.这个给出各个版本.net的解决方 法. asp.net 2.0  解决办法 方法1: 将.aspx文件中的page项添加ValidateRequest="false" ,如下: <%@ Page ValidateRequest=&qu

Asp.net 从客户端中检测到有潜在危险的Request.Form值

解决方法: 在Web.config文件里找到<httpRuntime>节点,然后修改requestValidationMode="2.0" 修改结果如下: <system.web> <httpRuntime targetFramework="4.5" requestValidationMode="2.0"/> <system.web> 如果是asp.net应用程序 <% @ Page Vali