Skip to content

Commit dc375a0

Browse files
committed
将重复并导致报错的 x-header 和 header 改为都优先使用 x-header
1 parent f3afef0 commit dc375a0

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package apijson.boot;
2+
3+
import jakarta.servlet.FilterChain;
4+
import jakarta.servlet.ServletException;
5+
import jakarta.servlet.http.HttpServletRequest;
6+
import jakarta.servlet.http.HttpServletRequestWrapper;
7+
import jakarta.servlet.http.HttpServletResponse;
8+
import org.springframework.stereotype.Component;
9+
import org.springframework.web.filter.OncePerRequestFilter;
10+
11+
import java.io.IOException;
12+
13+
@Component
14+
public class RepeatHeaderFilter extends OncePerRequestFilter {
15+
16+
@Override
17+
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
18+
throws ServletException, IOException {
19+
20+
HttpServletRequestWrapper wrapper = new HttpServletRequestWrapper(request) {
21+
@Override
22+
public String getHeader(String name) {
23+
if (name != null && ! name.toLowerCase().startsWith("x-")) {
24+
String xVal = request.getHeader("x-" + name.toLowerCase());
25+
if (xVal != null && ! xVal.isEmpty()) {
26+
return xVal;
27+
}
28+
}
29+
30+
// if (name != null && name.toLowerCase().startsWith("x-")) {
31+
// String xVal = request.getHeader(name);
32+
// if (xVal == null || xVal.isEmpty()) {
33+
// return request.getHeader(name.substring(2).toLowerCase());
34+
// }
35+
// }
36+
37+
return super.getHeader(name);
38+
}
39+
};
40+
41+
filterChain.doFilter(wrapper, response);
42+
}
43+
}

0 commit comments

Comments
 (0)