我有一个web应用程序,将用户的搜索词放在查询字符串中,以类似于Google的方式。例如,地址可能是www.example.com/mysearchpage.aspx?q=searchTerm
。
通常这样可以很好地工作,但是如果在搜索词中有一个特殊字符,如action
属性被编码为百分比编码,并且该字符被替换为%u00e2
。
如果我搜索chât
,我将在浏览器的地址栏中以URL www.example.com/mysearchpage.aspx?q=chât
结束,但从服务器返回的表单上的action
属性将是www.example.com/mysearchpage.aspx?q=ch%u00e2t
,这意味着随后的表单提交失败,因为URL格式不正确。
我已经确保在IIS编码设置为UTF-8的请求,响应头和响应。我还检查了IIS在Fiddler中传递的页面,其中已经包含了错误编码的action
。
编码格式似乎是本维基百科文章中解释的非标准格式。
是否有一种方法可以防止IIS以这种方式编码表单的action
?
解决方案是将targetFramework=4.5.2
添加到web中的httpRuntime
标签中。配置文件。
以前没有指定,但是在compilation
标签中指定了,但是指定targetFramework=4.5.1
仍然会导致问题。