Skip to content

Commit 55eed59

Browse files
committed
Server:服务器代理接口 delegate 过滤部分请求头
1 parent fa4c2a5 commit 55eed59

File tree

1 file changed

+15
-5
lines changed
  • APIJSON-Java-Server/APIJSONBoot/src/main/java/apijson/demo/server

1 file changed

+15
-5
lines changed

APIJSON-Java-Server/APIJSONBoot/src/main/java/apijson/demo/server/Controller.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.net.URLDecoder;
2626
import java.rmi.ServerException;
2727
import java.util.ArrayList;
28+
import java.util.Arrays;
2829
import java.util.Enumeration;
2930
import java.util.List;
3031
import 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

Comments
 (0)