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里的參數。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM