http协议请求不符合method要求时改成返回405
This commit is contained in:
@@ -42,6 +42,8 @@ public class HttpResponse extends Response<HttpContext, HttpRequest> {
|
|||||||
|
|
||||||
protected static final byte[] bytes404 = "HTTP/1.1 404 Not Found\r\nContent-Length:0\r\n\r\n".getBytes();
|
protected static final byte[] bytes404 = "HTTP/1.1 404 Not Found\r\nContent-Length:0\r\n\r\n".getBytes();
|
||||||
|
|
||||||
|
protected static final byte[] bytes405 = "HTTP/1.1 405 Method Not Allowed\r\nContent-Length:0\r\n\r\n".getBytes();
|
||||||
|
|
||||||
protected static final byte[] bytes500 = "HTTP/1.1 500 Internal Server Error\r\nContent-Length:0\r\n\r\n".getBytes();
|
protected static final byte[] bytes500 = "HTTP/1.1 500 Internal Server Error\r\nContent-Length:0\r\n\r\n".getBytes();
|
||||||
|
|
||||||
protected static final byte[] bytes504 = "HTTP/1.1 504 Gateway Timeout\r\nContent-Length:0\r\n\r\n".getBytes();
|
protected static final byte[] bytes504 = "HTTP/1.1 504 Gateway Timeout\r\nContent-Length:0\r\n\r\n".getBytes();
|
||||||
@@ -983,6 +985,14 @@ public class HttpResponse extends Response<HttpContext, HttpRequest> {
|
|||||||
super.finish(false, bytes404);
|
super.finish(false, bytes404);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 以405状态码输出
|
||||||
|
*/
|
||||||
|
public void finish405() {
|
||||||
|
skipHeader();
|
||||||
|
super.finish(false, bytes405);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 以500状态码输出
|
* 以500状态码输出
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ import static org.redkale.asm.ClassWriter.COMPUTE_FRAMES;
|
|||||||
import static org.redkale.asm.Opcodes.*;
|
import static org.redkale.asm.Opcodes.*;
|
||||||
import org.redkale.boot.Application;
|
import org.redkale.boot.Application;
|
||||||
import org.redkale.net.*;
|
import org.redkale.net.*;
|
||||||
import org.redkale.service.RetResult;
|
|
||||||
import org.redkale.util.*;
|
import org.redkale.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -29,8 +28,10 @@ import org.redkale.util.*;
|
|||||||
*/
|
*/
|
||||||
public class HttpServlet extends Servlet<HttpContext, HttpRequest, HttpResponse> {
|
public class HttpServlet extends Servlet<HttpContext, HttpRequest, HttpResponse> {
|
||||||
|
|
||||||
|
@Deprecated //@since 2.8.0
|
||||||
public static final int RET_SERVER_ERROR = 1200_0001;
|
public static final int RET_SERVER_ERROR = 1200_0001;
|
||||||
|
|
||||||
|
@Deprecated //@since 2.8.0
|
||||||
public static final int RET_METHOD_ERROR = 1200_0002;
|
public static final int RET_METHOD_ERROR = 1200_0002;
|
||||||
|
|
||||||
String _actionSimpleMappingUrl; //只给HttpActionServlet使用,_actionSimpleMappingUrl不能包含正则表达式,比如 /json /createRecord, 不能是 /user/**
|
String _actionSimpleMappingUrl; //只给HttpActionServlet使用,_actionSimpleMappingUrl不能包含正则表达式,比如 /json /createRecord, 不能是 /user/**
|
||||||
@@ -82,7 +83,8 @@ public class HttpServlet extends Servlet<HttpContext, HttpRequest, HttpResponse>
|
|||||||
if (request.actionEntry != null) {
|
if (request.actionEntry != null) {
|
||||||
ActionEntry entry = request.actionEntry;
|
ActionEntry entry = request.actionEntry;
|
||||||
if (!entry.checkMethod(request.getMethod())) {
|
if (!entry.checkMethod(request.getMethod())) {
|
||||||
response.finishJson(new RetResult(RET_METHOD_ERROR, "Method(" + request.getMethod() + ") Error"));
|
//response.finishJson(new RetResult(RET_METHOD_ERROR, "Method(" + request.getMethod() + ") Error"));
|
||||||
|
response.finish405();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
request.moduleid = entry.moduleid;
|
request.moduleid = entry.moduleid;
|
||||||
@@ -100,7 +102,8 @@ public class HttpServlet extends Servlet<HttpContext, HttpRequest, HttpResponse>
|
|||||||
if (request.getRequestURI().startsWith(en.getKey())) {
|
if (request.getRequestURI().startsWith(en.getKey())) {
|
||||||
ActionEntry entry = en.getValue();
|
ActionEntry entry = en.getValue();
|
||||||
if (!entry.checkMethod(request.getMethod())) {
|
if (!entry.checkMethod(request.getMethod())) {
|
||||||
response.finishJson(new RetResult(RET_METHOD_ERROR, "Method(" + request.getMethod() + ") Error"));
|
//response.finishJson(new RetResult(RET_METHOD_ERROR, "Method(" + request.getMethod() + ") Error"));
|
||||||
|
response.finish405();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
request.actionEntry = entry;
|
request.actionEntry = entry;
|
||||||
@@ -332,7 +335,7 @@ public class HttpServlet extends Servlet<HttpContext, HttpRequest, HttpResponse>
|
|||||||
|
|
||||||
final String name;
|
final String name;
|
||||||
|
|
||||||
final String[] methods;
|
final String[] methods; //不能为null,长度为0表示容许所有method
|
||||||
|
|
||||||
final HttpServlet servlet;
|
final HttpServlet servlet;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user