XMPP HTTP-BIND 认证交互的消息流

本文介绍XMPP协议下的BOSH规范(XEP1024),详细展示了非安全方式下通过HTTP协议承载XMPP消息的认证过程,包括主键系列生成算法、客户端与服务器之间的交互认证请求等。
XMPP定义的BOSH规范(XEP 1024)是为了在HTTP协议上承载XMPP消息。下面是XEP 1024定义的非安全方式下的认证消息流。只有在 SSL (or TLS) HTTP连接保护下的消息才是安全的消息,否则为非安全的消息。XEP 1024定义了主键系列的方式保护非安全的消息,这种方案只能防御到不能修改消息内容的攻击者;如果需要彻底的保护消息,只能使用SSL或者TLS。为了清楚地截取交互过程,下面的流程基于非安全的方式。

主键系列生成算法:
        K(1) = hex(SHA-1(seed))
K(2) = hex(SHA-1(K(1)))
...
K(n) = hex(SHA-1(K(n-1)))

交互的XMPP消息流中 第一个消息包含newkey的属性,其值为第一个主键系列的值。
后续的客户端给服务器端发送的消息必须带上SID及key的值,每个key的值由前一个key的值计算而来。当循环用到最后一个key值
的时候,可以同时设置newkey的属性,开始新的一系列key值。
下面的交互过程从jwchat与openfire3.3.2的http-bind模块通信中截取。
xml 代码
 
  1. Accept-Language: zh-cn  
  2. Referer: http://191.1.11.56:8082/CIM/index.htm?jid=user1.org1&server=191.1.11.77&pass=123456&nickname=........  
  3. Content-Type: text/xml; charset=utf-8  
  4. Accept-Encoding: gzip, deflate  
  5. User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)  
  6. Host: 191.1.11.77:8080  
  7. Content-Length: 151  
  8. Connection: Keep-Alive  
  9. Cache-Control: no-cache  
  10.   
  11. <body hold='1' xmlns='http://jabber.org/protocol/httpbind' to='191.1.11.77'   
  12. wait='300' rid='803757' newkey='b543ff6c4c105dba31d70c6f1c7304ed7bece24b'/>  
Server返回一个SID,并给出认证的选择。
xml 代码
 
  1. HTTP/1.1 200 OK  
  2. Content-Type: text/xml; charset=utf-8  
  3. Content-Length: 662  
  4. Server: Jetty(6.1.x)  
  5.   
  6.   
  7.   
  8. <body xmlns="http://jabber.org/protocol/httpbind" 
  9. xmlns:stream="http://etherx.jabber.org/streams"
  10. authid="1fc3b503" sid="1fc3b503" secure="true"
  11. requests="2" inactivity="30" polling="0" wait="10">
  12. <stream:features><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl">  
  13. <mechanism>DIGEST-MD5mechanism>  
  14. <mechanism>JIVE-SHAREDSECRETmechanism>  
  15. <mechanism>PLAINmechanism>  
  16. <mechanism>ANONYMOUSmechanism>  
  17. <mechanism>CRAM-MD5mechanism>mechanisms>  
  18. <compression xmlns="http://jabber.org/features/compress">
  19. <method>zlibmethod>compression>
  20. <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"/>
  21. <session xmlns="urn:ietf:params:xml:ns:xmpp-session"/>stream:features>body>  
下面是客户端发送认证

请求。digest的值为sha1(sid + password)
xml 代码
 
  1. POST /http-bind/ HTTP/1.1  
  2. Accept: */*  
  3. Accept-Language: zh-cn  
  4. Referer:http://191.1.11.56:8082/CIM/index.htm?jid=user1.org1&server=191.1.11.77&pass=123456&nickname=........  
  5. Content-Type: text/xml; charset=utf-8  
  6. Accept-Encoding: gzip, deflate  
  7. User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)  
  8. Host: 191.1.11.77:8080  
  9. Content-Length: 346  
  10. Connection: Keep-Alive  
  11. Cache-Control: no-cache  
  12.   
  13. <body rid='803759' sid='1fc3b503' xmlns='http://jabber.org/protocol/httpbind'   
  14. key='aabcfc3ad7a327fa9542da51b24d024361d4b6f1' >  
  15. <iq xmlns="jabber:client" type="set" id="auth2">  
  16. <query xmlns="jabber:iq:auth">  
  17. <username>user1.org1username>  
  18. <resource>............resource>  
  19. <digest>33f2e458193401a8eb12443b0f459c16079463d9digest>query>iq>  
  20. body>  
xml 代码
 
  1. HTTP/1.1 200 OK  
  2. Content-Type: text/xml; charset=utf-8  
  3. Content-Length: 136  
  4. Server: Jetty(6.1.x)  
  5.   
  6. <body xmlns='http://jabber.org/protocol/httpbind'>
  7. <iq type="result" id="auth2" to="user1.org1@domainname/............"/>
  8. body>  
认证结束,客户端发送呈现的消息流,查询用户的状态
xml 代码
 
  1. POST /http-bind/ HTTP/1.1  
  2. Accept: */*  
  3. Accept-Language: zh-cn  
  4. Referer:http://191.1.11.56:8082/CIM/index.htm?jid=user1.org1&server=191.1.11.77&pass=123456&nickname=........  
  5. Content-Type: text/xml; charset=utf-8  
  6. Accept-Encoding: gzip, deflate  
  7. User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)  
  8. Host: 191.1.11.77:8080  
  9. Content-Length: 266  
  10. Connection: Keep-Alive  
  11. Cache-Control: no-cache  
  12.   
  13. <body rid='803761' sid='1fc3b503' xmlns='http://jabber.org/protocol/httpbind'
  14. key='d32ea55815de2c52f1b736080a79825cc227e09d' >
  15. <iq xmlns="jabber:client" type="get" id="jwchat_state">
  16. <query xmlns="jabber:iq:private"><jwchat xmlns="jwchat:state"/>query>iq>  
  17. body>  
查询状态返回:
xml 代码
 
  1. HTTP/1.1 200 OK  
  2. Content-Type: text/xml; charset=utf-8  
  3. Content-Length: 265  
  4. Server: Jetty(6.1.x)  
  5.   
  6. <body xmlns='http://jabber.org/protocol/httpbind'>
  7. <iq type="result" id="jwchat_state" to="user1.org1@domainname/............">
  8. <query xmlns="jabber:iq:private">
  9. <jwchat xmlns="jwchat:state">
  10. <presence>availablepresence>
  11. <onlmsg/>
  12. jwchat>query>iq>body>  
发布呈现信息
xml 代码
 
  1. POST /http-bind/ HTTP/1.1  
  2. Accept: */*  
  3. Accept-Language: zh-cn  
  4. Referer: http://191.1.11.56:8082/CIM/index.htm?jid=user1.org1&server=191.1.11.77&pass=123456&nickname=........  
  5. Content-Type: text/xml; charset=utf-8  
  6. Accept-Encoding: gzip, deflate  
  7. User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)  
  8. Host: 191.1.11.77:8080  
  9. Content-Length: 620  
  10. Connection: Keep-Alive  
  11. Cache-Control: no-cache  
  12.   
  13. <body rid='803763' sid='1fc3b503' xmlns='http://jabber.org/protocol/httpbind'
  14. key='192ed9480229081924997e91a275411df3bdfb0f' >
  15. <presence xmlns="jabber:client"><priority>10priority>presence>  
  16. <iq xmlns="jabber:client" to="191.1.11.77" type="get" id="disco_item_1">
  17. <query xmlns="http://jabber.org/protocol/disco#items"/>iq>
  18. <iq xmlns="jabber:client" type="get" id="storage_bookmarks">
  19. <query xmlns="jabber:iq:private"><storage xmlns="storage:bookmarks"/>query>iq> 
  20. <iq xmlns="jabber:client" type="get" id="jwchat_notes">
  21. <query xmlns="jabber:iq:private"><storage xmlns="storage:rosternotes"/>query>iq>
  22. body>  
返回
xml 代码
 
  1. HTTP/1.1 200 OK  
  2. Content-Type: text/xml; charset=utf-8  
  3. Content-Length: 201  
  4. Server: Jetty(6.1.x)  
  5.   
  6. <body xmlns='http://jabber.org/protocol/httpbind'>
  7. <presence from="user1.org1@domainname/............"
  8. to="user1.org1@domainname/............"><priority>10priority>
  9. presence>body>  
[root@yfw ~]# cd /www/wwwroot/szrengjing.com/kefu [root@yfw kefu]# ll total 96 -rw-r--r-- 1 www www 136 Nov 7 05:23 cookie_7e7nd77j1ft9lmlimsodkbu5f0.txt drwxr-xr-x 2 www www 4096 Nov 6 23:14 cookies drwxr-xr-x 2 www www 4096 Nov 6 20:21 css -rw-r--r-- 1 www www 861 Nov 6 18:51 error.log -rwxr-xr-x 1 www www 1229 Nov 6 23:43 http-bind.php drwxr-xr-x 2 www www 4096 Nov 6 17:38 images -rw-r--r-- 1 www www 1756 Nov 6 17:11 index.html drwxr-xr-x 2 www www 4096 Nov 6 17:12 js -rw-r--r-- 1 www www 1830 Nov 6 20:09 kefu_auth.php -rw-r--r-- 1 www www 424 Nov 6 19:26 kefu_history.php -rw-r--r-- 1 www www 3199 Nov 6 19:51 kefu_login.html -rw-r--r-- 1 www www 948 Nov 6 20:20 kefu_save_history.php -rw-r--r-- 1 www www 418 Nov 6 19:25 kefu_users.php -rw-r--r-- 1 www www 8456 Nov 6 20:18 kefu_workbench.html drwxr-xr-x 2 www www 4096 Nov 6 23:14 logs -rw-r--r-- 1 root root 20 Nov 7 10:45 phpinfo.php -rw-r--r-- 1 www www 3571 Nov 6 22:44 proxy.php drwxr-xr-x 2 www www 4096 Nov 6 17:08 sound drwxr-xr-x 2 www www 4096 Nov 6 17:38 WEB-INF -rwxr-xr-x 1 www www 2405 Nov 7 03:26 widget.js -rw-r--r-- 1 root root 1038 Nov 7 10:42 xmpp_test.log -rwxr-xr-x 1 www www 3323 Nov 6 19:09 xmpp_test.sh [root@yfw kefu]# 根据测文件 从新创建用户 来进行测试 #!/bin/bash set -e # 配置参数 OPENFIRE_URL="https://yfw.szrengjing.com:7443/http-bind/" USER="test" PASSWORD="test123" DOMAIN="yfw.szrengjing.com" COOKIE_FILE="cookies.txt" INIT_RID=100000 rm -f $COOKIE_FILE xmpp_test.log echo "===== 开始XMPP自动化测试 =====" | tee -a xmpp_test.log # 步骤1:建立会话 echo -e "\n[步骤1/4] 建立会话..." | tee -a xmpp_test.log RID=$((INIT_RID + 1)) SESSION_RESPONSE=$(curl -k -s -c $COOKIE_FILE -X POST $OPENFIRE_URL \ -H "Content-Type: text/xml; charset=utf-8" \ -d '<?xml version="1.0"?><body rid="'$RID'" xmlns="http://jabber.org/protocol/httpbind" to="'$DOMAIN'" xml:lang="en" wait="60" hold="1" content="text/xml; charset=utf-8" ver="1.6" xmpp:version="1.0" xmlns:xmpp="urn:xmpp:xbosh"/>' ) echo "会话响应: $SESSION_RESPONSE" | tee -a xmpp_test.log SID=$(echo "$SESSION_RESPONSE" | xmllint --xpath "string(//@sid)" - 2>/dev/null) if [ -z "$SID" ]; then echo "错误:无法提取sid" | tee -a xmpp_test.log exit 1 fi echo "获取到sid: $SID" | tee -a xmpp_test.log # 步骤2:认证 echo -e "\n[步骤2/4] 执行认证..." | tee -a xmpp_test.log RID=$((RID + 1)) PLAIN_AUTH=$(echo -ne "\0$USER\0$PASSWORD" | base64) AUTH_RESPONSE=$(curl -k -s -b $COOKIE_FILE -X POST $OPENFIRE_URL \ -H "Content-Type: text/xml; charset=utf-8" \ -d '<?xml version="1.0"?><body rid="'$RID'" sid="'$SID'" xmlns="http://jabber.org/protocol/httpbind"><auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="PLAIN">'$PLAIN_AUTH'</auth></body>' ) echo "认证响应: $AUTH_RESPONSE" | tee -a xmpp_test.log if ! echo "$AUTH_RESPONSE" | grep -q "<success"; then echo "认证失败" | tee -a xmpp_test.log exit 1 fi echo "认证成功" | tee -a xmpp_test.log # 步骤3:绑定资源(修复命名空间解析问题) echo -e "\n[步骤3/4] 绑定资源..." | tee -a xmpp_test.log RID=$((RID + 1)) BIND_RESPONSE=$(curl -k -s -b $COOKIE_FILE -X POST $OPENFIRE_URL \ -H "Content-Type: text/xml; charset=utf-8" \ -d '<?xml version="1.0"?><body rid="'$RID'" sid="'$SID'" xmlns="http://jabber.org/protocol/httpbind"><iq type="set" id="bind1"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"><resource>webclient</resource></bind></iq></body>' ) echo "绑定响应: $BIND_RESPONSE" | tee -a xmpp_test.log # 忽略命名空间,直接提取jid文本(兼容解析问题) JID=$(echo "$BIND_RESPONSE" | grep -oP '<jid>\K[^<]+') if [ -z "$JID" ]; then echo "错误:资源绑定失败" | tee -a xmpp_test.log exit 1 fi echo "资源绑定成功,JID: $JID" | tee -a xmpp_test.log # 步骤4:自动发送消息(脚本内执行,无超时问题) echo -e "\n[步骤4/4] 发送测试消息..." | tee -a xmpp_test.log RID=$((RID + 1)) MESSAGE_RESPONSE=$(curl -k -s -b $COOKIE_FILE -X POST $OPENFIRE_URL \ -H "Content-Type: text/xml; charset=utf-8" \ -d '<?xml version="1.0"?><body rid="'$RID'" sid="'$SID'" xmlns="http://jabber.org/protocol/httpbind"><message from="'$JID'" to="admin@'$DOMAIN'" type="chat"><body>自动化测试消息</body></message></body>' ) echo "消息发送响应: $MESSAGE_RESPONSE" | tee -a xmpp_test.log if echo "$MESSAGE_RESPONSE" | grep -q "<body"; then echo "消息发送成功" | tee -a xmpp_test.log else echo "消息发送失败" | tee -a xmpp_test.log fi echo -e "\n===== 测试完成 =====" | tee -a xmpp_test.log
11-08
[root@yfw ~]# cd /www/wwwroot/szrengjing.com [root@yfw szrengjing.com]# curl -v \ > -H "Content-Type: text/xml" \ > -d '<body rid="123456789" xmlns="http://jabber.org/protocol/httpbind"/>' \ > https://zxkf.szrengjing.com/http-bind * Trying 124.71.230.244... * TCP_NODELAY set * Connected to zxkf.szrengjing.com (124.71.230.244) port 443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * successfully set certificate verify locations: * CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none * TLSv1.3 (OUT), TLS handshake, Client hello (1): * TLSv1.3 (IN), TLS handshake, Server hello (2): * TLSv1.3 (IN), TLS handshake, [no content] (0): * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8): * TLSv1.3 (IN), TLS handshake, [no content] (0): * TLSv1.3 (IN), TLS handshake, Certificate (11): * TLSv1.3 (IN), TLS handshake, [no content] (0): * TLSv1.3 (IN), TLS handshake, CERT verify (15): * TLSv1.3 (IN), TLS handshake, [no content] (0): * TLSv1.3 (IN), TLS handshake, Finished (20): * TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.3 (OUT), TLS handshake, [no content] (0): * TLSv1.3 (OUT), TLS handshake, Finished (20): * SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 * ALPN, server accepted to use h2 * Server certificate: * subject: CN=zxkf.szrengjing.com * start date: Oct 13 03:37:58 2025 GMT * expire date: Jan 11 03:37:57 2026 GMT * subjectAltName: host "zxkf.szrengjing.com" matched cert's "zxkf.szrengjing.com" * issuer: C=US; O=Let's Encrypt; CN=R12 * SSL certificate verify ok. * Using HTTP2, server supports multi-use * Connection state changed (HTTP/2 confirmed) * Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0 * TLSv1.3 (OUT), TLS app data, [no content] (0): * TLSv1.3 (OUT), TLS app data, [no content] (0): * TLSv1.3 (OUT), TLS app data, [no content] (0): * Using Stream ID: 1 (easy handle 0x55dd989e8690) * TLSv1.3 (OUT), TLS app data, [no content] (0): > POST /http-bind HTTP/2 > Host: zxkf.szrengjing.com > User-Agent: curl/7.61.1 > Accept: */* > Content-Type: text/xml > Content-Length: 67 > * TLSv1.3 (OUT), TLS app data, [no content] (0): * We are completely uploaded and fine * TLSv1.3 (IN), TLS handshake, [no content] (0): * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): * TLSv1.3 (IN), TLS handshake, [no content] (0): * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): * TLSv1.3 (IN), TLS app data, [no content] (0): * Connection state changed (MAX_CONCURRENT_STREAMS == 128)! * TLSv1.3 (OUT), TLS app data, [no content] (0): * TLSv1.3 (IN), TLS app data, [no content] (0): < HTTP/2 200 < server: nginx < date: Fri, 31 Oct 2025 08:41:19 GMT < content-type: text/xml;charset=utf-8 < content-length: 730 < access-control-allow-methods: CANCELUPLOAD, HEAD, MKCOL, UNCHECKOUT, POST, CHECKIN, CHECKOUT, PROPFIND, LOCK, VERSION-CONTROL, COPY, REPORT, OPTIONS, PUT, DELETE, GETLIB, MOVE, GET, UPDATE, PROPPATCH, UNLOCK < access-control-allow-headers: Destination, Overwrite, X-Requested-With, Cache-Control, X-File-Name, User-Agent, X-File-Size, If-Modified-Since, Depth, Content-Type < access-control-max-age: 86400 < vary: Accept-Encoding < set-cookie: server_name_session=30cfff002de8f66adfef6602044f67bf; Max-Age=86400; httponly; path=/ < set-cookie: SITE_TOTAL_ID=a65fdf7026f86b882aa24da596e45305; Path=/; Max-Age=259200000; HttpOnly < strict-transport-security: max-age=31536000 < * Connection #0 to host zxkf.szrengjing.com left intact <body xmlns="http://jabber.org/protocol/httpbind" xmlns:stream="http://etherx.jabber.org/streams" from="localhost" authid="8bcy8362au" sid="8bcy8362au" secure="true" requests="2" inactivity="30" polling="5" wait="60"><stream:features><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism><mechanism>ANONYMOUS</mechanism><mechanism>SCRAM-SHA-1</mechanism><mechanism>CRAM-MD5</mechanism><mechanism>PADE</mechanism><mechanism>DIGEST-MD5</mechanism><mechanism>JIVE-SHAREDSECRET</mechanism></mechanisms><register xmlns="http://jabber.org/features/iq-register"/><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"/><session xmlns="urn:ietf:params:xml:ns:xmpp-session"><optional/></session></stream:features></body>[root@yfw szrengjing.com]# [root@yfw szrengjing.com]# curl -v \ > -H "Content-Type: text/xml" \ > -d '<body rid="123456789" xmlns="http://jabber.org/protocol/httpbind"/>' \ > https://zxkf.szrengjing.com/http-bind * Trying 124.71.230.244... * TCP_NODELAY set * Connected to zxkf.szrengjing.com (124.71.230.244) port 443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * successfully set certificate verify locations: * CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none * TLSv1.3 (OUT), TLS handshake, Client hello (1): * TLSv1.3 (IN), TLS handshake, Server hello (2): * TLSv1.3 (IN), TLS handshake, [no content] (0): * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8): * TLSv1.3 (IN), TLS handshake, [no content] (0): * TLSv1.3 (IN), TLS handshake, Certificate (11): * TLSv1.3 (IN), TLS handshake, [no content] (0): * TLSv1.3 (IN), TLS handshake, CERT verify (15): * TLSv1.3 (IN), TLS handshake, [no content] (0): * TLSv1.3 (IN), TLS handshake, Finished (20): * TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.3 (OUT), TLS handshake, [no content] (0): * TLSv1.3 (OUT), TLS handshake, Finished (20): * SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 * ALPN, server accepted to use h2 * Server certificate: * subject: CN=zxkf.szrengjing.com * start date: Oct 13 03:37:58 2025 GMT * expire date: Jan 11 03:37:57 2026 GMT * subjectAltName: host "zxkf.szrengjing.com" matched cert's "zxkf.szrengjing.com" * issuer: C=US; O=Let's Encrypt; CN=R12 * SSL certificate verify ok. * Using HTTP2, server supports multi-use * Connection state changed (HTTP/2 confirmed) * Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0 * TLSv1.3 (OUT), TLS app data, [no content] (0): * TLSv1.3 (OUT), TLS app data, [no content] (0): * TLSv1.3 (OUT), TLS app data, [no content] (0): * Using Stream ID: 1 (easy handle 0x556749a3f690) * TLSv1.3 (OUT), TLS app data, [no content] (0): > POST /http-bind HTTP/2 > Host: zxkf.szrengjing.com > User-Agent: curl/7.61.1 > Accept: */* > Content-Type: text/xml > Content-Length: 67 > * TLSv1.3 (OUT), TLS app data, [no content] (0): * We are completely uploaded and fine * TLSv1.3 (IN), TLS handshake, [no content] (0): * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): * TLSv1.3 (IN), TLS handshake, [no content] (0): * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): * TLSv1.3 (IN), TLS app data, [no content] (0): * Connection state changed (MAX_CONCURRENT_STREAMS == 128)! * TLSv1.3 (OUT), TLS app data, [no content] (0): * TLSv1.3 (IN), TLS app data, [no content] (0): < HTTP/2 200 < server: nginx < date: Fri, 31 Oct 2025 08:42:06 GMT < content-type: text/xml;charset=utf-8 < content-length: 730 < access-control-allow-methods: CANCELUPLOAD, HEAD, MKCOL, UNCHECKOUT, POST, CHECKIN, CHECKOUT, PROPFIND, LOCK, VERSION-CONTROL, COPY, REPORT, OPTIONS, PUT, DELETE, GETLIB, MOVE, GET, UPDATE, PROPPATCH, UNLOCK < access-control-allow-headers: Destination, Overwrite, X-Requested-With, Cache-Control, X-File-Name, User-Agent, X-File-Size, If-Modified-Since, Depth, Content-Type < access-control-max-age: 86400 < vary: Accept-Encoding < set-cookie: server_name_session=30cfff002de8f66adfef6602044f67bf; Max-Age=86400; httponly; path=/ < set-cookie: SITE_TOTAL_ID=f919b89e82b343cdd1f0e54478077ea3; Path=/; Max-Age=259200000; HttpOnly < strict-transport-security: max-age=31536000 < * Connection #0 to host zxkf.szrengjing.com left intact <body xmlns="http://jabber.org/protocol/httpbind" xmlns:stream="http://etherx.jabber.org/streams" from="localhost" authid="5u0sqpvmu9" sid="5u0sqpvmu9" secure="true" requests="2" inactivity="30" polling="5" wait="60"><stream:features><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism><mechanism>ANONYMOUS</mechanism><mechanism>SCRAM-SHA-1</mechanism><mechanism>CRAM-MD5</mechanism><mechanism>PADE</mechanism><mechanism>DIGEST-MD5</mechanism><mechanism>JIVE-SHAREDSECRET</mechanism></mechanisms><register xmlns="http://jabber.org/features/iq-register"/><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"/><session xmlns="urn:ietf:params:xml:ns:xmpp-session"><optional/></session></stream:features></body>[root@yfw szrengjing.com]# <body xmlns='http://jabber.org/protocol/httpbind' -bash: body: No such file or directory [root@yfw szrengjing.com]# sid='abc123def456ghi789' [root@yfw szrengjing.com]# wait='60' [root@yfw szrengjing.com]# ver='1.6' [root@yfw szrengjing.com]# from='zxkf.szrengjing.com' [root@yfw szrengjing.com]# hold='1' [root@yfw szrengjing.com]# ack='1'> -bash: syntax error near unexpected token `newline' [root@yfw szrengjing.com]# </body> -bash: syntax error near unexpected token `newline' [root@yfw szrengjing.com]#
11-01
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值