1

我们正在使用 REST 接口管理 CQ5 组。要添加一个用户,我们做

POST http://$host:$port/home/groups/t/test_group.rw.html
Content-Type: application/x-www-form-urlencoded

addMembers:my_principal_name

只要名称仅包含 ASCII 字符,它就可以按预期工作。

我们尝试使用 latin 1 (ISO-8859-1)。例如对于主体名称ü

POST http://$host:$port/home/groups/t/test_group.rw.html
Content-Type: application/x-www-form-urlencoded

addMembers:%FC

在这种情况下,不会生成错误,但不会添加主体。

我们的解决方法是使用 UTF-8 并对其进行两次URL 编码。üC3BC,URL 编码的它变成%C3%BC并再次编码%25C3%25BC

总结一下,要添加成员ü,我们必须提交

POST http://$host:$port/home/groups/t/test_group.rw.html
Content-Type: application/x-www-form-urlencoded

addMembers:%25C3%25BC

按预期工作。

这是一个错误还是 API 真的需要发送 UTF-8 编码的字符串 URL 编码两次?

编辑我尝试使用附加_charset_参数

telnet ******** 8000
Trying ********...
Connected to ********.
Escape character is '^]'.
POST /home/groups/nethz/lz/06065.rw.html HTTP/1.1
Host: *********:8000
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
Authorization: Basic ****************=
_charset_=UTF-8&addMembers=aaaa_testgr%C3%BCppli

HTTP/1.1 200 OK
Connection: Keep-Alive
Server: Day-Servlet-Engine/4.1.44 
Content-Type: text/html;charset=UTF-8
Date: Fri, 04 Oct 2013 10:50:19 GMT
Transfer-Encoding: chunked

4f6
<html>
<head>
    <title>Content modified /home/groups/nethz/lz/06065</title>
</head>
    <body>
    <h1>Content modified /home/groups/nethz/lz/06065</h1>
    <table>
        <tbody>
            <tr>
                <td>Status</td>
                <td><div id="Status">200</div></td>
            </tr>
            <tr>
                <td>Message</td>
                <td><div id="Message">OK</div></td>
            </tr>
            <tr>
                <td>Location</td>
                <td><a href="" id="Location"></a></td>
            </tr>
            <tr>
                <td>Parent Location</td>
                <td><a href="" id="ParentLocation"></a></td>
            </tr>
            <tr>
                <td>Path</td>
                <td><div id="Path">/home/groups/nethz/lz/06065</div></td>
            </tr>
            <tr>
                <td>Referer</td>
                <td><a href="" id="Referer"></a></td>
            </tr>
            <tr>
                <td>ChangeLog</td>
                <td><div id="ChangeLog">&lt;pre&gt;&lt;/pre&gt;</div></td>
            </tr>
        </tbody>
    </table>
    <p><a href="">Go Back</a></p>
    <p><a href="">Modified Resource</a></p>
    <p><a href="">Parent of Modified Resource</a></p>
    </body>
</html>
0

Connection closed by foreign host.

我们得到状态 200 的答案,但子组aaaa_testgrüppli( aaa_testgr%C3%BCppli) 未插入/home/groups/nethz/lz/06065

4

1 回答 1

1

Sling从POST 参数获取请求编码。是一个后备值。尝试将此参数设置为._charset_ISO-8859-1UTF-8

于 2013-10-02T07:02:57.150 回答