POST encodeURIComponent查询字符串Internal Server ERROR 500

时间:2015-03-12 08:41:41

标签: javascript validation xmlhttprequest query-string encode

更新时间:2015-03-18部分解决方案见下面的评论

通过纯JavaScript(AJAX)请求将HTML发布到服务器,不使用AJAX库。

有人可以告诉我为什么会失败吗?即使它是编码的?

xmlhttpObj.open(“POST”,“apage.aspx?name1 = value1& name2 =%3Cd”,true);

内部服务器错误500 - 无法加载资源

WIN 7,IIS7,Chrome,纯javascript [请,没有JQuery或其他] 这是一个javascript xmlhttpRequest open / POST / send();异步(或同步,都失败) 在web.config和page指令中对httpRuntimeValidationMode = 2.0和pages requestValidate = false进行了更改,所有FRAMEWORK都安装到4.0

编码的唯一部分是第二个名称/值对的值(%3Cd)(name2 =%3Cd) - ...编码URL部分更糟糕......

特殊字符(%3C)是< char和d是div标签的第一个char ...将HTML发布到服务器。

如果该值中没有特殊字符,则它传递(编码或不编码)2061个字符(即使IIS设置为4096并且这些更改反映在web.config中) 仅一个角括号(<)通过!?因此需要2个字符(%3Cd)才能打破它。

如果此行插入Broswer URL栏:(注意,缺少C) http://localhost/sitename/apage.aspx?name1=value1&name2=%3d 有效地跳过javascript httpRequest,ResponseText是:“value1 =” 因此,第一个值成功,第二个值也成功,因为3D是'='符号(令人讨厌的巧合 - 大声笑,让我循环)。

%3Cd - 当C没有被移除时......'[lessthan] d'等于麻烦(呃!)。 黄色跟踪屏幕:从客户端检测到一个潜在危险的Request.QueryString值(name2 = [lessthan] d)。 - 在跟踪页面上没有提到错误500.

为什么不取消验证机制?! ......我认为只需要编码吗?! ......为什么它会在2061年窒息?

请记住,在无数个实例中同时使用相同的机制,同步和异步......只要没有传递“危险”字符就没有问题。上面的'='(3d)示例和2061 SUCCESS显示此实例没有什么不同。

我不会毫不犹豫地发帖......在我求助之前40小时我会打破我的头脑,我已经阅读了整个互联网...(嗅闻)! (t.y。)

1 个答案:

答案 0 :(得分:0)

...不确定这是否是正确或可接受的方式,但通过对'<'进行'替换'来解决问题TEMPORARILY有一个'独特的3个字符安全字符串',我可以随意解码...而且我相信我必须为其他字符做到这一点,这将失败这个过程。

我更喜欢坚实的公认解决方案。 ...以及queryString长度等其他相关问题也未得到解决 t.y。