场景:推送消息给微信公众号,公众号展示内容限制20个字符,如果内容过多,就展示不完全。所以可以通过点击详情查看更多内容
所以弄了一个公共的html页面,需要展示什么传什么。比如
展示效果如:(url的data=后面是html代码应该也可以渲染出来,如果不行就是还有特殊符号未处理。结合全文理解,你应该就会处理了)
前端代码:
<script>
var data = location.href.split('data=');
if(data){
var d = data[1];
d = customDecodeURIComponent(d);
$('#content').html(decodeURIComponent(d));
}
//这个函数使用正则表达式来查找百分号,并检查其后是否跟着两个有效的十六进制字符。
//如果不是,它会将该百分号替换为 %25,否则会保留原样。
//这样可以避免将本来是普通百分号的情况误解为编码。
function customDecodeURIComponent(str) {
return str.replace(/%(?![0-9A-Fa-f]{2})/g, '%25');
}
</script>
?注意:
因为有特殊字符,后端项目如果是springboot的话,其使用的是嵌入式的Tomcat服务器。所以,有特殊符号的url会报400错误
此时,还没有进入后端程序呢,只不过到了Tomcat就出错了,所以要配置下Tomcat的url的特殊符号处理。springboot的yml文件配置如下:
server:
port: 8097
servlet:
encoding:
charset: UTF-8
enabled: true
session:
timeout: 18500 # 单位为秒,这里设置Session的过期时间为30分钟
context-path: /yyy
tomcat:
relaxed-path-chars: #relaxedPathChars: 该属性定义了Tomcat容器对于URL路径中非转义字符的容忍度。路径是URL中域名后的部分,即http://example.com/这部分就是路径。在这个路径中,有一些字符是被允许的,即使它们没有被进行URL编码。默认情况下,Tomcat容器对路径字符的容忍度是比较严格的,但通过配置relaxedPathChars属性,你可以告诉Tomcat容器允许额外的字符,而不需要进行URL编码。
relaxed-query-chars: #relaxedQueryChars: 该属性定义了Tomcat容器对于URL查询字符串中非转义字符的容忍度。查询字符串是URL中?后的部分,包含参数和其对应的值。与relaxedPathChars类似,通过配置relaxedQueryChars属性,你可以告诉Tomcat容器允许额外的字符,而不需要进行URL编码。
- '['
- ']'
- '|'
- '`'
- '\'
- '{'
- '}'