none
ARR反向代理网址中含有中文怎么处理? RRS feed

  • 问题

  • 被代理的网站使用gb2312编码,部分网址通过URL传递了中文参数,这些中文参数经过ARR反向代理后,中文参数变成乱码了。有办法解决吗?
    www.fengyun.org
    2011年1月13日 3:22

全部回复

  • 你好,

    你可以尝试在URL重写的入站规则里面使用字符串函数来解决这个问题,有三个内置函数是可用的:

    ToLower - 将输入字符串转换成小写字母
    UrlEncode - 将输入字符串转换成URL-编码格式。 这个函数适用于规则中的替换字符串包含了特殊字符(比如非ASCII编码或不安全的字符)。
    UrlDecode - 对编码的输入字符串进行解码. 这个函数可以用来对条件中的输入字符串在进其行匹配之前进行解码

    语法:

    {函数名称:字符串}

    示例:

    {ToLower:DEFAULT.HTM}
    {UrlDecode:{REQUEST_URI}}
    {UrlEncode:{R:1}.aspx?p=[résumé]}


    Leo Tang [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    2011年1月14日 6:37
    版主
  • 你好,

    你可以尝试在URL重写的入站规则里面使用字符串函数来解决这个问题,有三个内置函数是可用的:

    ToLower - 将输入字符串转换成小写字母
    UrlEncode - 将输入字符串转换成URL-编码格式。 这个函数适用于规则中的替换字符串包含了特殊字符(比如非ASCII编码或不安全的字符)。
    UrlDecode - 对编码的输入字符串进行解码. 这个函数可以用来对条件中的输入字符串在进其行匹配之前进行解码

    语法:

    {函数名称:字符串}

    示例:

    {ToLower:DEFAULT.HTM}
    {UrlDecode:{REQUEST_URI}}
    {UrlEncode:{R:1}.aspx?p=[résumé]}


    Leo Tang [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    你好,经过测试,使用了UrlEncode和UrlDecode没有任何意义。例如,将客户端请求 http://www.xxx.com/Info.php?w=汉 重写为 http://xxx.domain.com/Info.php?w=汉

    http://xxx.domain.com/{R:0}

    http://xxx.domain.com/{UrlEncode:{R:0}}

    http://xxx.domain.com/{UrlDecode:{R:0}}

    三个写法都没有区别,返回的QUERY_STRING为:?w=%C2%BA%C2%BA ,HTTP头 HTTP_X_ORIGINAL_URL 返回 /Info.php??w=汉


    www.fengyun.org
    2011年1月18日 1:38
  • 你好,

    由于{R:0}中没有包含QUERY_STRING,所以函数在这里没法产生作用。你可以尝试禁用自动添加QUERY_STRING的选项,然后用如下的写法:

    http://xxx.domain.com/{R:0}?{UrlEncode:{QUERY_STRING}}

    谢谢


    Leo Tang [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    2011年1月24日 3:45
    版主
  • 使用这个方法产生了如下结果:

    访问:Info.php?w=汉

    得到:

    _GET["w=潞潞"]         no value


    www.fengyun.org
    2011年1月25日 8:54
  • 没使用UrlEncode返回的是:

    _GET["w"]              潞潞


    www.fengyun.org
    2011年1月25日 9:01
  • 您好,我现在用ARR也遇到了网址中带中文访问出错的问题,用上面介绍的方法

    http://xxx.domain.com/{R:0}?{UrlEncode:{QUERY_STRING}} 得到一样的结果,请问您现在该问题解决了吗?能给我点建议的话不胜感激!谢谢!

    2011年7月4日 0:23