url有%等特殊符号的处理

场景:推送消息给微信公众号,公众号展示内容限制20个字符,如果内容过多,就展示不完全。所以可以通过点击详情查看更多内容

url有%等特殊符号的处理_第1张图片

所以弄了一个公共的html页面,需要展示什么传什么。比如

url有%等特殊符号的处理_第2张图片

展示效果如:(url的data=后面是html代码应该也可以渲染出来,如果不行就是还有特殊符号未处理。结合全文理解,你应该就会处理了。)

如果后面是html代码,传给微信推送消息会报错:data format error rid: 658e7a07-4643dbf9-07a3c8ff,我估计是微信那边没有对url做太多的兼容处理导致的。但是直接浏览器打开链接是没问题的

url有%等特殊符号的处理_第3张图片

前端代码:

如果说url的 ?myHtml= 真个html代码,会存在换行问题:URL 中通常不允许包含换行符。URL 规范定义了一种特定的格式,要求 URL 中的字符集受到限制,并且不能包含控制字符或非打印字符,包括换行符。所以一定要处理好换行,不然有些代码会识别失败,比如识别为注释的代码了

 注意:

因为有特殊字符,后端项目如果是springboot的话,其使用的是嵌入式的Tomcat服务器。所以,有特殊符号的url会报400错误

url有%等特殊符号的处理_第4张图片

此时,还没有进入后端程序呢,只不过到了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编码。
      - '['
      - ']'
      - '|'
      - '`'
      - '\'
      - '{'
      - '}'

你可能感兴趣的:(mysql,数据库,前端)