2525import java .net .URLDecoder ;
2626import java .rmi .ServerException ;
2727import java .util .ArrayList ;
28+ import java .util .Arrays ;
2829import java .util .Enumeration ;
2930import java .util .List ;
3031import java .util .Random ;
@@ -967,13 +968,20 @@ public JSONObject putBalance(@RequestBody String request, HttpSession session) {
967968 }
968969
969970
971+ public static final List <String > EXCEPT_HEADER_LIST ;
972+ static {
973+ EXCEPT_HEADER_LIST = Arrays .asList ( //accept-encoding 在某些情况下导致乱码,origin 和 sec-fetch-mode 等 CORS 信息导致服务器代理失败
974+ "accept-encoding" , "accept-language" , // "accept", "connection"
975+ "host" , "origin" , "referer" , "user-agent" , "sec-fetch-mode" , "sec-fetch-site" , "sec-fetch-dest" , "sec-fetch-user"
976+ );
977+ }
978+
970979 @ Autowired
971980 HttpServletRequest request ;
972981 @ Autowired
973982 HttpServletResponse response ;
974983
975984 @ RequestMapping (value = "/delegate" )
976- // @ResponseBody
977985 public String delegate (@ RequestParam ("$_delegate_url" ) String url , @ RequestBody String body , HttpMethod method , HttpSession session ){
978986 Enumeration <String > names = request .getHeaderNames ();
979987 HttpHeaders headers = null ;
@@ -982,9 +990,11 @@ public String delegate(@RequestParam("$_delegate_url") String url, @RequestBody
982990 headers = new HttpHeaders ();
983991 while (names .hasMoreElements ()) {
984992 name = names .nextElement ();
985- headers .add (name , request .getHeader (name ));
993+ if (name != null && EXCEPT_HEADER_LIST .contains (name .toLowerCase ()) == false ) {
994+ headers .add (name , request .getHeader (name ));
995+ }
986996 }
987-
997+
988998 @ SuppressWarnings ("unchecked" )
989999 List <String > cookie = session == null ? null : (List <String >) session .getAttribute ("Cookie" );
9901000 if (cookie != null && cookie .isEmpty () == false ) {
@@ -1007,7 +1017,7 @@ public String delegate(@RequestParam("$_delegate_url") String url, @RequestBody
10071017 HttpEntity <String > requestEntity = new HttpEntity <>(method == HttpMethod .GET ? JSON .toJSONString (request .getParameterMap ()) : body , headers );
10081018 // 执行HTTP请求
10091019 ResponseEntity <String > entity = client .exchange (url , method , requestEntity , String .class );
1010-
1020+
10111021 HttpHeaders hs = entity .getHeaders ();
10121022 if (session != null && hs != null ) {
10131023 List <String > cookie = hs .get ("Set-Cookie" );
@@ -1018,7 +1028,7 @@ public String delegate(@RequestParam("$_delegate_url") String url, @RequestBody
10181028 return entity .getBody ();
10191029 }
10201030
1021-
1031+
10221032 /**Swagger 文档 Demo,供 APIAuto 测试导入 Swagger 文档到数据库用
10231033 * @return
10241034 */
0 commit comments