zoukankan      html  css  js  c++  java
  • spring cloud zuul网关踩坑——经过zuul网关后字符串参数多一倍的问题

    保存音频文件接口

    http://xxxx/ecc/api/ei/saveSounds?content=开心1&xxxxxx=xxxxx&sign=xxxxx

    header:access-token=3756d53e-a28f-47da-bfc7-3898a418b4c6

    body:soundFile=录音文件.mp3

    经过zuul网关之后,字符串参数content=开心1,结果变成了“开心1,开心1”,不传文件时正常。

    解决方案:

    网关配置文件加个参数:

    zuul:
      #上传文件服务的前缀
      servlet-path: /file
      #需要忽略的头部信息,不在传播到其他服务
      sensitive-headers: Access-Control-Allow-Origin
      ignored-headers: Access-Control-Allow-Origin,H-APP-Id,Token,APPToken

    请求url加上/file前缀就解决问题。

    旧请求url:http://xxxx/ecc/api/ei/saveSounds?content=开心1&xxxxxx=xxxxx&sign=xxxxx

    新请求url:http://xxxx/file/ecc/api/ei/saveSounds?content=开心1&xxxxxx=xxxxx&sign=xxxxx

    原理:

    默认请求是spring MVC,网关上传文件时会有许多问题,上传文件时走zuul servlet就没有问题了,默认servlet-path=/zuul,我这里改为了/file。

    另一个坑点

    我的网关会解析header和body里的参数,合起来校验sign签名的有效性。

    所以,一旦body里是文件就会I/O异常。

    解决办法:走zuul servlet时body是文件,我们跳过解析body里的参数。

  • 相关阅读:
    27. 移除元素
    LeetCode---9.回文数
    PAT 1098 Insertion or Heap Sort (25)
    PAT 1146 Topological Order
    PAT 1147 Heaps(30 分)
    数据结构 二分查找1
    数据结构 树
    PAT 1126 Eulerian Path
    PAT 1111 Online Map (30)
    PAT 1072 Gas Station (30)
  • 原文地址:https://www.cnblogs.com/13yan/p/13744940.html
Copyright © 2011-2022 走看看