orange
orange copied to clipboard
URL重定向插件模板提取变量被转义
é对Orange使ç¨
çæé®ï¼ 对äºç®åå å¥è¯æè¿°ä¸æ¸
çé®é¢ï¼ 请使ç¨ä»¥ä¸æ ¼å¼ï¼ ä¸ç¬¦åæ ¼å¼ææè¿°å«ç³ä¸æ¸
çissueå°ä¸äºåå¤ã
éæ±æåºæ¯
URL被éå®åä¸ï¼åæ°éå«æç¼ç åçç½å(http%3A%2F%2Fproxy.pay.xxx.com%2Fjmsresult.html)ï¼è¢«éå®ååï¼åæ°å¼ä¸åã
使ç¨çæ件
URLéå®å
å ·ä½çé ç½®
ææçç»æ
http://proxy.xxx.com/newPayHandle?bankNo=1&bgUrl=http%3A%2F%2Fproxy.pay.xxx.com%2Fjmsresult.html&bizNo=000001098&clientIp=192.168.108.169&ext1=ext1&ext2=ext2&fgUrl=http%3A%2F%2Fproxy.pay.xxx.com%2Fjmsresult.html&orderAmt=1&orderId=201707071499408527140&orderTime=20160115165020&other1=other1&other2=other2&other3=other3&pageCharset=1&payType=W2&[email protected]&payerName=wqxhome&peerId=0x1p23M4j56789zz&productDesc=%E6%B5%8B%E8%AF%95%E5%95%86%E5%93%81&productName=%E6%B5%8B%E8%AF%95%E5%95%86%E5%93%81&version=v1.0&xlnumId=69551120&xunleiId=xlchannel&signMsg=fd6f8b8a7edee2de343e5c4b70ed7322
é误çç»æ
http://proxy.xxx.com/newPayHandle?bankNo=1&bgUrl=http://proxy.pay.xxx.com/jmsresult.html&bizNo=000001098&clientIp=192.168.108.169&ext1=ext1&ext2=ext2&fgUrl=http://proxy.pay.xxx.com/jmsresult.html&orderAmt=1&orderId=201707071499408527140&orderTime=20160115165020&other1=other1&other2=other2&other3=other3&pageCharset=1&payType=W2&[email protected]&payerName=wqxhome&peerId=0x1p23M4j56789zz&productDesc=%E6%B5%8B%E8%AF%95%E5%95%86%E5%93%81&productName=%E6%B5%8B%E8%AF%95%E5%95%86%E5%93%81&version=v1.0&xlnumId=69551120&xunleiId=xlchannel&signMsg=fd6f8b8a7edee2de343e5c4b70ed7322
图片与描述不一致,请尽量保持一致。
你是想说编码有问题吗?
已经更正了,麻烦再看下~
用索引式提取提取没问题,模板提取就出现这个问题
参考下 #104
@sumory 不算是bug吧。算是文档说明的问题吧。
我没有细看,模板式提取默认使用的lua-resty-template,所以应该给用户一个开关,让用户选择是不是开启html转义比较好? @noname007
感觉这样做意义不太大。在这个场景里面的内容没有被浏览器当做 html 去解析的机会, 最多也就做个url编码。
建议直接使用 {* *}
替代 {{}}
,orange 这里做的是个中间层,建议尽量是原样传递。
@mousycoder 按照 @noname007 的建议,使用{**}
可以保留原参数格式,使用{{}}
则会经过html转义。测试参考示例如下:
需求
原始URL为http://localhost:8000/test_tmpl?name=abc&a_url=http://abc.com?m=123&b_url=http://opq.com
,我们希望能重定向这个请求到http://test.com
上,同时想正常的传递a_url
,也就是说a_url
参数仍能正常保留“网址”格式。
配置
在dashboard上配置如下:
测试
在浏览器测试,发现访问原网址时被重定向到http://test.com/?new_name=abc&new_a_url=http://abc.com?m=123&new_b_url=http://opq.com
,原参数a_url
按照我们的配置保留了原网址格式并成功命名为new_a_url
。
结论
如以上实例,使用{query.a_url}则保留了原参数格式,而使用{{query.b_url}}则会经过转义,需要使用哪一种由用户自己适当选择即可。