|
|
|
@ -53,6 +53,12 @@ public class RouterHandler extends Handler {
|
|
|
|
|
@Override
|
|
|
|
|
public void handle(String target, HttpServletRequest req, HttpServletResponse res, boolean[] isHandled) {
|
|
|
|
|
try {
|
|
|
|
|
// 处理OPTIONS请求
|
|
|
|
|
if (req.getMethod().equals("OPTIONS")) {
|
|
|
|
|
handleOptionsRequest(res, isHandled);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String servletPath = req.getServletPath();
|
|
|
|
|
String queryString = req.getQueryString();
|
|
|
|
|
|
|
|
|
@ -103,6 +109,36 @@ public class RouterHandler extends Handler {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 处理OPTIONS请求
|
|
|
|
|
private void handleOptionsRequest(HttpServletResponse res, boolean[] isHandled) {
|
|
|
|
|
addCorsHeaders(res);
|
|
|
|
|
res.setStatus(HttpServletResponse.SC_OK);
|
|
|
|
|
isHandled[0] = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 添加CORS头信息
|
|
|
|
|
private void addCorsHeaders(HttpServletResponse res) {
|
|
|
|
|
// 设置允许的源
|
|
|
|
|
for (String origin : GatewayConfig.ALLOWED_ORIGINS) {
|
|
|
|
|
if ("*".equals(origin)) {
|
|
|
|
|
res.setHeader("Access-Control-Allow-Origin", "*");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 设置允许的方法
|
|
|
|
|
res.setHeader("Access-Control-Allow-Methods", String.join(",", GatewayConfig.ALLOWED_METHODS));
|
|
|
|
|
|
|
|
|
|
// 设置允许的头信息
|
|
|
|
|
res.setHeader("Access-Control-Allow-Headers", String.join(",", GatewayConfig.ALLOWED_HEADERS));
|
|
|
|
|
|
|
|
|
|
// 设置是否允许发送Cookie
|
|
|
|
|
res.setHeader("Access-Control-Allow-Credentials", String.valueOf(GatewayConfig.ALLOW_CREDENTIALS));
|
|
|
|
|
|
|
|
|
|
// 设置预检请求的缓存时间
|
|
|
|
|
res.setHeader("Access-Control-Max-Age", String.valueOf(GatewayConfig.MAX_AGE));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 处理GET请求
|
|
|
|
|
private void handleGetRequest(HttpServletRequest req, HttpServletResponse res,
|
|
|
|
|
boolean[] isHandled, String forwardUrl, String queryString) {
|
|
|
|
@ -269,7 +305,9 @@ public class RouterHandler extends Handler {
|
|
|
|
|
|
|
|
|
|
// 渲染JSON响应
|
|
|
|
|
private void renderJson(HttpServletResponse res, String body) {
|
|
|
|
|
res.setHeader("Access-Control-Allow-Origin", "*");
|
|
|
|
|
// 添加CORS头信息
|
|
|
|
|
addCorsHeaders(res);
|
|
|
|
|
|
|
|
|
|
res.setHeader("Cache-Control", "no-cache");
|
|
|
|
|
res.setCharacterEncoding("UTF-8");
|
|
|
|
|
res.setContentType(Constants.CONTENT_TYPE_JSON);
|
|
|
|
|