【问题标题】:POST encodeURIComponent query string Internal Server ERROR 500POST encodeURIComponent 查询字符串内部服务器错误 500
【发布时间】:2015-03-12 08:41:41
【问题描述】:

更新:2015-03-18 部分解决,请参阅下面的 cmets

通过纯 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

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

特殊字符 (%3C) 是

如果该值中没有特殊字符,它将传递(编码与否)2061 个字符(即使 IIS 设置为 4096 并且这些更改反映在 web.config 中) 单独一个尖括号(

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

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

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

请记住,在无数情况下,同步和异步都使用相同的机制而不会出现问题...只要不传递“危险”字符就没有问题。上面的 '='(3d) 示例和 2061 SUCCESS 表明此实例没有什么不同。

我不会随便发帖...我会在寻求帮助前 40 小时打破我的头,我已经阅读了整个互联网...(嗅嗅)! (年)

【问题讨论】:

    标签: javascript validation xmlhttprequest query-string encode


    【解决方案1】:

    ...不确定这是正确或可接受的方法,但通过使用“唯一的 3 字符安全字符串”“替换”“

    我更喜欢可靠的解决方案。 ...以及其他相关问题(例如 queryString 长度)也未解决 t.y.

    【讨论】:

    • 1.暂时关闭 RquestValidation(由于问题 2 已解决,我现在可能会弄清楚 2. QueryString len: (RESOLVED) 在我进行更改的 inetpub/wwwroot/ 中有一个 web.config,在站点 rootdir/ 中有一个 web.config,但是在 inetpub/ 中遇到了一个 web.config ???不知道它是如何到达那里的...删除它...现在 QueryString 长度参数开始了。
    猜你喜欢
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    • 2020-10-01
    • 2018-01-15
    • 1970-01-01
    相关资源
    最近更新 更多