Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
elleai
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ai-tech
E
ellehuis-group
backend
elleai
Commits
a95bbc57
Commit
a95bbc57
authored
Oct 14, 2024
by
陈立彬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
跨域配置
parent
8997304c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
45 additions
and
23 deletions
+45
-23
CorsConfig.java
src/main/java/cn/breeze/elleai/CorsConfig.java
+45
-23
No files found.
src/main/java/cn/breeze/elleai/CorsConfig.java
View file @
a95bbc57
...
...
@@ -7,39 +7,61 @@ import org.springframework.http.HttpMethod;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.server.reactive.ServerHttpRequest
;
import
org.springframework.http.server.reactive.ServerHttpResponse
;
import
org.springframework.web.cors.CorsConfiguration
;
import
org.springframework.web.cors.UrlBasedCorsConfigurationSource
;
import
org.springframework.web.cors.reactive.CorsUtils
;
import
org.springframework.web.filter.CorsFilter
;
import
org.springframework.web.server.ServerWebExchange
;
import
org.springframework.web.server.WebFilter
;
import
org.springframework.web.server.WebFilterChain
;
import
reactor.core.publisher.Mono
;
import
java.util.Collections
;
@Configuration
public
class
CorsConfig
{
// @Bean
// public WebFilter corsFilter2() {
// return (ServerWebExchange ctx, WebFilterChain chain) -> {
// ServerHttpRequest request = ctx.getRequest();
// if (CorsUtils.isCorsRequest(request)) {
// HttpHeaders requestHeaders = request.getHeaders();
// ServerHttpResponse response = ctx.getResponse();
// HttpMethod requestMethod = requestHeaders.getAccessControlRequestMethod();
// HttpHeaders headers = response.getHeaders();
// headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, requestHeaders.getOrigin());
// headers.addAll(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS,
// requestHeaders.getAccessControlRequestHeaders());
// if (requestMethod != null) {
// headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, requestMethod.name());
// }
// headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
// headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "*");
// if (request.getMethod() == HttpMethod.OPTIONS) {
// response.setStatusCode(HttpStatus.OK);
// return Mono.empty();
// }
// }
// return chain.filter(ctx);
// };
// }
@Bean
public
WebFilter
corsFilter2
()
{
return
(
ServerWebExchange
ctx
,
WebFilterChain
chain
)
->
{
ServerHttpRequest
request
=
ctx
.
getRequest
();
if
(
CorsUtils
.
isCorsRequest
(
request
))
{
HttpHeaders
requestHeaders
=
request
.
getHeaders
();
ServerHttpResponse
response
=
ctx
.
getResponse
();
HttpMethod
requestMethod
=
requestHeaders
.
getAccessControlRequestMethod
();
HttpHeaders
headers
=
response
.
getHeaders
();
headers
.
add
(
HttpHeaders
.
ACCESS_CONTROL_ALLOW_ORIGIN
,
requestHeaders
.
getOrigin
());
headers
.
addAll
(
HttpHeaders
.
ACCESS_CONTROL_ALLOW_HEADERS
,
requestHeaders
.
getAccessControlRequestHeaders
());
if
(
requestMethod
!=
null
)
{
headers
.
add
(
HttpHeaders
.
ACCESS_CONTROL_ALLOW_METHODS
,
requestMethod
.
name
());
}
headers
.
add
(
HttpHeaders
.
ACCESS_CONTROL_ALLOW_CREDENTIALS
,
"true"
);
headers
.
add
(
HttpHeaders
.
ACCESS_CONTROL_EXPOSE_HEADERS
,
"*"
);
if
(
request
.
getMethod
()
==
HttpMethod
.
OPTIONS
)
{
response
.
setStatusCode
(
HttpStatus
.
OK
);
return
Mono
.
empty
();
}
}
return
chain
.
filter
(
ctx
);
};
public
CorsFilter
corsFilter
()
{
CorsConfiguration
corsConfiguration
=
new
CorsConfiguration
();
//1.允许任何来源
corsConfiguration
.
setAllowedOriginPatterns
(
Collections
.
singletonList
(
"*"
));
//2.允许任何请求头
corsConfiguration
.
addAllowedHeader
(
CorsConfiguration
.
ALL
);
//3.允许任何方法
corsConfiguration
.
addAllowedMethod
(
CorsConfiguration
.
ALL
);
//4.允许凭证
corsConfiguration
.
setAllowCredentials
(
true
);
UrlBasedCorsConfigurationSource
source
=
new
UrlBasedCorsConfigurationSource
();
source
.
registerCorsConfiguration
(
"/**"
,
corsConfiguration
);
return
new
CorsFilter
(
source
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment