我需要使用基于vb.net的webservice中的信号向客户发送消息。这些消息是在html标签之间发送的,例如:<html><body>message<a href="...">link</a>text
,但每当我尝试通过一个信号发送它时,我都会收到此错误:
System.Web.HttpRequestValidationException: A potentially dangerous Request.Form value was detected from the client (pushMessage="message<a>link</a>text").
at System.Web.HttpRequest.ValidateString(String value, String collectionKey, RequestValidationSource requestCollection)
at System.Web.HttpRequest.ValidateHttpValueCollection(HttpValueCollection collection, RequestValidationSource requestCollection)
at System.Web.HttpRequest.get_Form()
at System.Web.Services.Protocols.HtmlFormParameterReader.Read(HttpRequest request)
at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
有人可以建议通过信号发送html数据的解决方案吗?
答案 0 :(得分:1)
此错误似乎发生在您的服务器端,而不是OneSignal。
以下是Microsoft对此错误消息的指南:https://msdn.microsoft.com/en-us/library/system.web.httprequestvalidationexception(v=vs.110).aspx
上面链接中的备注部分解释了如何解决此问题,引用:
在Web中,约束和验证用户输入是必不可少的 应用程序,以防止依赖恶意输入的黑客攻击 字符串。跨站点脚本攻击是此类攻击的一个示例。 可以在请求中传递其他类型的恶意或不需要的数据 通过各种形式的投入。通过限制数据的种类 在应用程序中以低级别传递,可以防止不良后果 事件,即使使用你的代码的程序员没有把 适当的验证技术到位。
请求验证检测到 潜在的恶意客户端输入并抛出此异常以中止 处理请求。请求中止可以指示尝试 危及应用程序的安全性,例如跨站点 脚本攻击。强烈建议您申请 明确检查有关请求中止的所有输入。但是,你可以 通过在中设置validateRequest属性来禁用请求验证 该指令为false,如以下示例所示:
<%@ Page validateRequest="false" %>
禁用您的请求验证 应用程序,您必须修改或创建一个Web.config文件 应用程序并设置pages部分的validateRequest属性 为false,如下例所示:
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
禁用所有应用程序的请求验证 在您的服务器上,您可以对Machine.config进行此修改 文件。