我有一个带有textarea(tinymce)的表单用于输入内容.当我执行ajax请求时,我收到错误:
A potentially dangerous Request.Form
value was detected from the client
然后我尝试了类似的东西
html.encodeURIComponent()或escape()但错误仍然存在
HTML:
<form id="editForm" action="" method="post"> <input type="text" id="title" name="title" /> <textarea id="content" name="content"></textarea> <input type="button" id="submit" onclick="Submit();" /> </form>
脚本(我使用jQuery)
function Submit(){ $.ajax({ url: 'ajax.aspx?type=addcontent&' + $('#editForm').serialize() + '&rnd=' + Math.random(),success: function(data) { alert('OK'); } }); }
只要按下提交按钮,就会出现错误.没有发出ajax请求.我已经尝试将ValidateRequest =“false”添加到aspx页面,但问题仍然存在.
任何帮助表示赞赏!
解决方法
$.post('/foo',{ htmlContent: '<someHtml/>' },function(result) { alert('ok'); });
现在错误来自服务器端脚本,它不接受HTML. ASP.NET引擎将自动删除包含HTML的任何请求.有多种方法可以自行承担阻止此行为的风险.其中一个包括将ValidateRequest =“false”添加到aspx @Page头.
<%@ Page Language="C#" AutoEventWireup="false" ValidateRequest="false" %>
如果它是ASP.NET MVC应用程序,您可以使用[ValidateInput(false)]
属性修饰要发布的控制器操作:
[HttpPost] [ValidateInput(false)] public ActionResult Foo() { ... }
同样重要的是要注意,如果您运行的是.NET 4.0,则将以下内容添加到您的web.config中:
<httpRuntime requestValidationMode="2.0" />