public class org.springframework.web.cors.DefaultCorsProcessor implements org.springframework.web.cors.CorsProcessor
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.springframework.web.cors.DefaultCorsProcessor
super_class: java.lang.Object
{
private static final org.apache.commons.logging.Log logger;
descriptor: Lorg/apache/commons/logging/Log;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lorg/springframework/web/cors/DefaultCorsProcessor;
invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
putstatic org.springframework.web.cors.DefaultCorsProcessor.logger:Lorg/apache/commons/logging/Log;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/web/cors/DefaultCorsProcessor;
public boolean processRequest(org.springframework.web.cors.CorsConfiguration, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse);
descriptor: (Lorg/springframework/web/cors/CorsConfiguration;Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
invokestatic org.springframework.web.cors.CorsUtils.isCorsRequest:(Ljavax/servlet/http/HttpServletRequest;)Z
ifne 2
1: iconst_1
ireturn
2: StackMap locals:
StackMap stack:
new org.springframework.http.server.ServletServerHttpResponse
dup
aload 3
invokespecial org.springframework.http.server.ServletServerHttpResponse.<init>:(Ljavax/servlet/http/HttpServletResponse;)V
astore 4
start local 4 3: aload 0
aload 4
invokevirtual org.springframework.web.cors.DefaultCorsProcessor.responseHasCors:(Lorg/springframework/http/server/ServerHttpResponse;)Z
ifeq 6
4: getstatic org.springframework.web.cors.DefaultCorsProcessor.logger:Lorg/apache/commons/logging/Log;
ldc "Skip: response already contains \"Access-Control-Allow-Origin\""
invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
5: iconst_1
ireturn
6: StackMap locals: org.springframework.http.server.ServletServerHttpResponse
StackMap stack:
new org.springframework.http.server.ServletServerHttpRequest
dup
aload 2
invokespecial org.springframework.http.server.ServletServerHttpRequest.<init>:(Ljavax/servlet/http/HttpServletRequest;)V
astore 5
start local 5 7: aload 5
invokestatic org.springframework.web.util.WebUtils.isSameOrigin:(Lorg/springframework/http/HttpRequest;)Z
ifeq 10
8: getstatic org.springframework.web.cors.DefaultCorsProcessor.logger:Lorg/apache/commons/logging/Log;
ldc "Skip: request is from same origin"
invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
9: iconst_1
ireturn
10: StackMap locals: org.springframework.http.server.ServletServerHttpRequest
StackMap stack:
aload 2
invokestatic org.springframework.web.cors.CorsUtils.isPreFlightRequest:(Ljavax/servlet/http/HttpServletRequest;)Z
istore 6
start local 6 11: aload 1
ifnonnull 16
12: iload 6
ifeq 15
13: aload 0
aload 4
invokevirtual org.springframework.web.cors.DefaultCorsProcessor.rejectRequest:(Lorg/springframework/http/server/ServerHttpResponse;)V
14: iconst_0
ireturn
15: StackMap locals: int
StackMap stack:
iconst_1
ireturn
16: StackMap locals:
StackMap stack:
aload 0
aload 5
aload 4
aload 1
iload 6
invokevirtual org.springframework.web.cors.DefaultCorsProcessor.handleInternal:(Lorg/springframework/http/server/ServerHttpRequest;Lorg/springframework/http/server/ServerHttpResponse;Lorg/springframework/web/cors/CorsConfiguration;Z)Z
ireturn
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lorg/springframework/web/cors/DefaultCorsProcessor;
0 17 1 config Lorg/springframework/web/cors/CorsConfiguration;
0 17 2 request Ljavax/servlet/http/HttpServletRequest;
0 17 3 response Ljavax/servlet/http/HttpServletResponse;
3 17 4 serverResponse Lorg/springframework/http/server/ServletServerHttpResponse;
7 17 5 serverRequest Lorg/springframework/http/server/ServletServerHttpRequest;
11 17 6 preFlightRequest Z
Exceptions:
throws java.io.IOException
RuntimeVisibleParameterAnnotations:
0:
org.springframework.lang.Nullable()
1:
2:
MethodParameters:
Name Flags
config
request
response
private boolean responseHasCors(org.springframework.http.server.ServerHttpResponse);
descriptor: (Lorg/springframework/http/server/ServerHttpResponse;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface org.springframework.http.server.ServerHttpResponse.getHeaders:()Lorg/springframework/http/HttpHeaders;
invokevirtual org.springframework.http.HttpHeaders.getAccessControlAllowOrigin:()Ljava/lang/String;
ifnull 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
2: ireturn
3: StackMap locals:
StackMap stack: java.lang.NullPointerException
pop
4: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/springframework/web/cors/DefaultCorsProcessor;
0 5 1 response Lorg/springframework/http/server/ServerHttpResponse;
Exception table:
from to target type
0 2 3 Class java.lang.NullPointerException
MethodParameters:
Name Flags
response
protected void rejectRequest(org.springframework.http.server.ServerHttpResponse);
descriptor: (Lorg/springframework/http/server/ServerHttpResponse;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
getstatic org.springframework.http.HttpStatus.FORBIDDEN:Lorg/springframework/http/HttpStatus;
invokeinterface org.springframework.http.server.ServerHttpResponse.setStatusCode:(Lorg/springframework/http/HttpStatus;)V
1: aload 1
invokeinterface org.springframework.http.server.ServerHttpResponse.getBody:()Ljava/io/OutputStream;
ldc "Invalid CORS request"
getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
invokevirtual java.io.OutputStream.write:([B)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/springframework/web/cors/DefaultCorsProcessor;
0 3 1 response Lorg/springframework/http/server/ServerHttpResponse;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
response
protected boolean handleInternal(org.springframework.http.server.ServerHttpRequest, org.springframework.http.server.ServerHttpResponse, org.springframework.web.cors.CorsConfiguration, boolean);
descriptor: (Lorg/springframework/http/server/ServerHttpRequest;Lorg/springframework/http/server/ServerHttpResponse;Lorg/springframework/web/cors/CorsConfiguration;Z)Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=6, locals=12, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 1
invokeinterface org.springframework.http.server.ServerHttpRequest.getHeaders:()Lorg/springframework/http/HttpHeaders;
invokevirtual org.springframework.http.HttpHeaders.getOrigin:()Ljava/lang/String;
astore 5
start local 5 1: aload 0
aload 3
aload 5
invokevirtual org.springframework.web.cors.DefaultCorsProcessor.checkOrigin:(Lorg/springframework/web/cors/CorsConfiguration;Ljava/lang/String;)Ljava/lang/String;
astore 6
start local 6 2: aload 2
invokeinterface org.springframework.http.server.ServerHttpResponse.getHeaders:()Lorg/springframework/http/HttpHeaders;
astore 7
start local 7 3: aload 7
ldc "Vary"
iconst_3
anewarray java.lang.String
dup
iconst_0
ldc "Origin"
aastore
dup
iconst_1
4: ldc "Access-Control-Request-Method"
aastore
dup
iconst_2
ldc "Access-Control-Request-Headers"
aastore
5: invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
invokevirtual org.springframework.http.HttpHeaders.addAll:(Ljava/lang/String;Ljava/util/List;)V
6: aload 6
ifnonnull 10
7: getstatic org.springframework.web.cors.DefaultCorsProcessor.logger:Lorg/apache/commons/logging/Log;
new java.lang.StringBuilder
dup
ldc "Reject: '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 5
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "' origin is not allowed"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
8: aload 0
aload 2
invokevirtual org.springframework.web.cors.DefaultCorsProcessor.rejectRequest:(Lorg/springframework/http/server/ServerHttpResponse;)V
9: iconst_0
ireturn
10: StackMap locals: java.lang.String java.lang.String org.springframework.http.HttpHeaders
StackMap stack:
aload 0
aload 1
iload 4
invokevirtual org.springframework.web.cors.DefaultCorsProcessor.getMethodToUse:(Lorg/springframework/http/server/ServerHttpRequest;Z)Lorg/springframework/http/HttpMethod;
astore 8
start local 8 11: aload 0
aload 3
aload 8
invokevirtual org.springframework.web.cors.DefaultCorsProcessor.checkMethods:(Lorg/springframework/web/cors/CorsConfiguration;Lorg/springframework/http/HttpMethod;)Ljava/util/List;
astore 9
start local 9 12: aload 9
ifnonnull 16
13: getstatic org.springframework.web.cors.DefaultCorsProcessor.logger:Lorg/apache/commons/logging/Log;
new java.lang.StringBuilder
dup
ldc "Reject: HTTP '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 8
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "' is not allowed"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
14: aload 0
aload 2
invokevirtual org.springframework.web.cors.DefaultCorsProcessor.rejectRequest:(Lorg/springframework/http/server/ServerHttpResponse;)V
15: iconst_0
ireturn
16: StackMap locals: org.springframework.http.HttpMethod java.util.List
StackMap stack:
aload 0
aload 1
iload 4
invokevirtual org.springframework.web.cors.DefaultCorsProcessor.getHeadersToUse:(Lorg/springframework/http/server/ServerHttpRequest;Z)Ljava/util/List;
astore 10
start local 10 17: aload 0
aload 3
aload 10
invokevirtual org.springframework.web.cors.DefaultCorsProcessor.checkHeaders:(Lorg/springframework/web/cors/CorsConfiguration;Ljava/util/List;)Ljava/util/List;
astore 11
start local 11 18: iload 4
ifeq 22
aload 11
ifnonnull 22
19: getstatic org.springframework.web.cors.DefaultCorsProcessor.logger:Lorg/apache/commons/logging/Log;
new java.lang.StringBuilder
dup
ldc "Reject: headers '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 10
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "' are not allowed"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
20: aload 0
aload 2
invokevirtual org.springframework.web.cors.DefaultCorsProcessor.rejectRequest:(Lorg/springframework/http/server/ServerHttpResponse;)V
21: iconst_0
ireturn
22: StackMap locals: java.util.List java.util.List
StackMap stack:
aload 7
aload 6
invokevirtual org.springframework.http.HttpHeaders.setAccessControlAllowOrigin:(Ljava/lang/String;)V
23: iload 4
ifeq 25
24: aload 7
aload 9
invokevirtual org.springframework.http.HttpHeaders.setAccessControlAllowMethods:(Ljava/util/List;)V
25: StackMap locals:
StackMap stack:
iload 4
ifeq 27
aload 11
invokeinterface java.util.List.isEmpty:()Z
ifne 27
26: aload 7
aload 11
invokevirtual org.springframework.http.HttpHeaders.setAccessControlAllowHeaders:(Ljava/util/List;)V
27: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.springframework.web.cors.CorsConfiguration.getExposedHeaders:()Ljava/util/List;
invokestatic org.springframework.util.CollectionUtils.isEmpty:(Ljava/util/Collection;)Z
ifne 29
28: aload 7
aload 3
invokevirtual org.springframework.web.cors.CorsConfiguration.getExposedHeaders:()Ljava/util/List;
invokevirtual org.springframework.http.HttpHeaders.setAccessControlExposeHeaders:(Ljava/util/List;)V
29: StackMap locals:
StackMap stack:
getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
aload 3
invokevirtual org.springframework.web.cors.CorsConfiguration.getAllowCredentials:()Ljava/lang/Boolean;
invokevirtual java.lang.Boolean.equals:(Ljava/lang/Object;)Z
ifeq 31
30: aload 7
iconst_1
invokevirtual org.springframework.http.HttpHeaders.setAccessControlAllowCredentials:(Z)V
31: StackMap locals:
StackMap stack:
iload 4
ifeq 33
aload 3
invokevirtual org.springframework.web.cors.CorsConfiguration.getMaxAge:()Ljava/lang/Long;
ifnull 33
32: aload 7
aload 3
invokevirtual org.springframework.web.cors.CorsConfiguration.getMaxAge:()Ljava/lang/Long;
invokevirtual java.lang.Long.longValue:()J
invokevirtual org.springframework.http.HttpHeaders.setAccessControlMaxAge:(J)V
33: StackMap locals:
StackMap stack:
aload 2
invokeinterface org.springframework.http.server.ServerHttpResponse.flush:()V
34: iconst_1
ireturn
end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 35 0 this Lorg/springframework/web/cors/DefaultCorsProcessor;
0 35 1 request Lorg/springframework/http/server/ServerHttpRequest;
0 35 2 response Lorg/springframework/http/server/ServerHttpResponse;
0 35 3 config Lorg/springframework/web/cors/CorsConfiguration;
0 35 4 preFlightRequest Z
1 35 5 requestOrigin Ljava/lang/String;
2 35 6 allowOrigin Ljava/lang/String;
3 35 7 responseHeaders Lorg/springframework/http/HttpHeaders;
11 35 8 requestMethod Lorg/springframework/http/HttpMethod;
12 35 9 allowMethods Ljava/util/List<Lorg/springframework/http/HttpMethod;>;
17 35 10 requestHeaders Ljava/util/List<Ljava/lang/String;>;
18 35 11 allowHeaders Ljava/util/List<Ljava/lang/String;>;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
request
response
config
preFlightRequest
protected java.lang.String checkOrigin(org.springframework.web.cors.CorsConfiguration, java.lang.String);
descriptor: (Lorg/springframework/web/cors/CorsConfiguration;Ljava/lang/String;)Ljava/lang/String;
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
aload 2
invokevirtual org.springframework.web.cors.CorsConfiguration.checkOrigin:(Ljava/lang/String;)Ljava/lang/String;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/web/cors/DefaultCorsProcessor;
0 1 1 config Lorg/springframework/web/cors/CorsConfiguration;
0 1 2 requestOrigin Ljava/lang/String;
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
RuntimeVisibleParameterAnnotations:
0:
1:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
config
requestOrigin
protected java.util.List<org.springframework.http.HttpMethod> checkMethods(org.springframework.web.cors.CorsConfiguration, org.springframework.http.HttpMethod);
descriptor: (Lorg/springframework/web/cors/CorsConfiguration;Lorg/springframework/http/HttpMethod;)Ljava/util/List;
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
aload 2
invokevirtual org.springframework.web.cors.CorsConfiguration.checkHttpMethod:(Lorg/springframework/http/HttpMethod;)Ljava/util/List;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/web/cors/DefaultCorsProcessor;
0 1 1 config Lorg/springframework/web/cors/CorsConfiguration;
0 1 2 requestMethod Lorg/springframework/http/HttpMethod;
Signature: (Lorg/springframework/web/cors/CorsConfiguration;Lorg/springframework/http/HttpMethod;)Ljava/util/List<Lorg/springframework/http/HttpMethod;>;
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
RuntimeVisibleParameterAnnotations:
0:
1:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
config
requestMethod
private org.springframework.http.HttpMethod getMethodToUse(org.springframework.http.server.ServerHttpRequest, boolean);
descriptor: (Lorg/springframework/http/server/ServerHttpRequest;Z)Lorg/springframework/http/HttpMethod;
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=3, args_size=3
start local 0 start local 1 start local 2 0: iload 2
ifeq 1
aload 1
invokeinterface org.springframework.http.server.ServerHttpRequest.getHeaders:()Lorg/springframework/http/HttpHeaders;
invokevirtual org.springframework.http.HttpHeaders.getAccessControlRequestMethod:()Lorg/springframework/http/HttpMethod;
goto 2
StackMap locals:
StackMap stack:
1: aload 1
invokeinterface org.springframework.http.server.ServerHttpRequest.getMethod:()Lorg/springframework/http/HttpMethod;
StackMap locals:
StackMap stack: org.springframework.http.HttpMethod
2: areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/springframework/web/cors/DefaultCorsProcessor;
0 3 1 request Lorg/springframework/http/server/ServerHttpRequest;
0 3 2 isPreFlight Z
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
request
isPreFlight
protected java.util.List<java.lang.String> checkHeaders(org.springframework.web.cors.CorsConfiguration, java.util.List<java.lang.String>);
descriptor: (Lorg/springframework/web/cors/CorsConfiguration;Ljava/util/List;)Ljava/util/List;
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
aload 2
invokevirtual org.springframework.web.cors.CorsConfiguration.checkHeaders:(Ljava/util/List;)Ljava/util/List;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/web/cors/DefaultCorsProcessor;
0 1 1 config Lorg/springframework/web/cors/CorsConfiguration;
0 1 2 requestHeaders Ljava/util/List<Ljava/lang/String;>;
Signature: (Lorg/springframework/web/cors/CorsConfiguration;Ljava/util/List<Ljava/lang/String;>;)Ljava/util/List<Ljava/lang/String;>;
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
config
requestHeaders
private java.util.List<java.lang.String> getHeadersToUse(org.springframework.http.server.ServerHttpRequest, boolean);
descriptor: (Lorg/springframework/http/server/ServerHttpRequest;Z)Ljava/util/List;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokeinterface org.springframework.http.server.ServerHttpRequest.getHeaders:()Lorg/springframework/http/HttpHeaders;
astore 3
start local 3 1: iload 2
ifeq 2
aload 3
invokevirtual org.springframework.http.HttpHeaders.getAccessControlRequestHeaders:()Ljava/util/List;
goto 3
StackMap locals: org.springframework.http.HttpHeaders
StackMap stack:
2: new java.util.ArrayList
dup
aload 3
invokevirtual org.springframework.http.HttpHeaders.keySet:()Ljava/util/Set;
invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
StackMap locals:
StackMap stack: java.util.List
3: areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/springframework/web/cors/DefaultCorsProcessor;
0 4 1 request Lorg/springframework/http/server/ServerHttpRequest;
0 4 2 isPreFlight Z
1 4 3 headers Lorg/springframework/http/HttpHeaders;
Signature: (Lorg/springframework/http/server/ServerHttpRequest;Z)Ljava/util/List<Ljava/lang/String;>;
MethodParameters:
Name Flags
request
isPreFlight
}
SourceFile: "DefaultCorsProcessor.java"