- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章SpringBoot解决跨域的5种方式小结由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
跨域:指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制.
例如:a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源。注意:跨域限制访问,其实是浏览器的限制。理解这一点很重要!!! 。
同源策略:是指协议,域名,端口都要相同,其中有一个不同都会产生跨域; 。
对于CORS的跨域请求,主要有以下几种方式可供选择:
注意
在任意配置类,返回一个 新的 CorsFIlter Bean ,并添加映射路径和具体的CORS配置路径.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
@Configuration
public
class
GlobalCorsConfig {
@Bean
public
CorsFilter corsFilter() {
//1. 添加 CORS配置信息
CorsConfiguration config =
new
CorsConfiguration();
//放行哪些原始域
config.addAllowedOrigin(
"*"
);
//是否发送 Cookie
config.setAllowCredentials(
true
);
//放行哪些请求方式
config.addAllowedMethod(
"*"
);
//放行哪些原始请求头部信息
config.addAllowedHeader(
"*"
);
//暴露哪些头部信息
config.addExposedHeader(
"*"
);
//2. 添加映射路径
UrlBasedCorsConfigurationSource corsConfigurationSource =
new
UrlBasedCorsConfigurationSource();
corsConfigurationSource.registerCorsConfiguration(
"/**"
,config);
//3. 返回新的CorsFilter
return
new
CorsFilter(corsConfigurationSource);
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
@Configuration
public
class
CorsConfig
implements
WebMvcConfigurer {
@Override
public
void
addCorsMappings(CorsRegistry registry) {
registry.addMapping(
"/**"
)
//是否发送Cookie
.allowCredentials(
true
)
//放行哪些原始域
.allowedOrigins(
"*"
)
.allowedMethods(
new
String[]{
"GET"
,
"POST"
,
"PUT"
,
"DELETE"
})
.allowedHeaders(
"*"
)
.exposedHeaders(
"*"
);
}
}
|
在控制器(类上)上使用注解 @CrossOrigin:,表示该类的所有方法允许跨域.
1
2
3
4
5
6
7
8
9
|
@RestController
@CrossOrigin
(origins =
"*"
)
public
class
HelloController {
@RequestMapping
(
"/hello"
)
public
String hello() {
return
"hello world"
;
}
}
|
在方法上使用注解 @CrossOrigin
1
2
3
4
5
6
|
@RequestMapping
(
"/hello"
)
@CrossOrigin
(origins =
"*"
)
//@CrossOrigin(value = "http://localhost:8081") //指定具体ip允许跨域
public
String hello() {
return
"hello world"
;
}
|
使用 HttpServletResponse 对象添加响应头(Access-Control-Allow-Origin)来授权原始域,这里 Origin的值也可以设置为 “*”,表示全部放行.
1
2
3
4
5
6
|
@RequestMapping
(
"/index"
)
public
String index(HttpServletResponse response) {
response.addHeader(
"Access-Allow-Control-Origin"
,
"*"
);
return
"index"
;
}
|
首先编写一个过滤器,可以起名字为MyCorsFilter.java 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
package
cn.wideth.aop;
import
java.io.IOException;
import
javax.servlet.Filter;
import
javax.servlet.FilterChain;
import
javax.servlet.FilterConfig;
import
javax.servlet.ServletException;
import
javax.servlet.ServletRequest;
import
javax.servlet.ServletResponse;
import
javax.servlet.http.HttpServletResponse;
import
org.springframework.stereotype.Component;
@Component
public
class
MyCorsFilter
implements
Filter {
public
void
doFilter(ServletRequest req, ServletResponse res,
FilterChain chain)
throws
IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader(
"Access-Control-Allow-Origin"
,
"*"
);
response.setHeader(
"Access-Control-Allow-Methods"
,
"POST, GET, OPTIONS, DELETE"
);
response.setHeader(
"Access-Control-Max-Age"
,
"3600"
);
response.setHeader(
"Access-Control-Allow-Headers"
,
"x-requested-with,content-type"
);
chain.doFilter(req, res);
}
public
void
init(FilterConfig filterConfig) {}
public
void
destroy() {}
}
|
本文介绍了SpringBoot解决跨域的5种方式,本人使用最多的是第三种.
到此这篇关于SpringBoot解决跨域的5种方式小结的文章就介绍到这了,更多相关SpringBoot解决跨域内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://blog.csdn.net/qq_31960623/article/details/118254754 。
最后此篇关于SpringBoot解决跨域的5种方式小结的文章就讲到这里了,如果你想了解更多关于SpringBoot解决跨域的5种方式小结的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
这是我的本地域名 http://10.10.1.101/uxsurvey/profile/dashboard 在 Controller 中,我为用户列表设置了一个操作 redirect(control
要处理 Canonical URL,最佳做法是执行 301 重定向还是更好地为 www 和非 www 域使用相同的 IP 地址? 例如: 想要的规范 URL/域是 http://example.com
1 内网基础 内网/局域网(Local Area Network,LAN),是指在某一区域内有多台计算机互联而成的计算机组,组网范围通常在数千米以内。在局域网中,可以实现文件管理、应用软件共享、打印机
1 内网基础 内网/局域网(Local Area Network,LAN),是指在某一区域内有多台计算机互联而成的计算机组,组网范围通常在数千米以内。在局域网中,可以实现文件管理、应用软件共享、打印机
我想创建一个 weblogic 集群,其中有两个托管服务器,每个服务器在物理上独立的远程计算机上运行 根据weblogic文档 All Managed Servers in a cluster mus
我正在运行 grails 3.1.4,但在创建允许我将多个域对象绑定(bind)到其他几个域对象的模式时遇到了问题。作为我正在尝试做的一个例子: 我有三个类(class)。书籍、作者和阅读列表。 作者
我试图使用@count函数来根据它获取数据,但是在没有崩溃报告的情况下它以某种方式崩溃了。 这是代码 class PSMedia: Object { @objc dynamic var id
有谁知道是否有办法只输入字母字符而不输入数字?我想过这样的事情 CREATE DOMAIN countryDomain AS VARCHAR(100) CHECK( VALUE ??? );
我的代码: const checkoutUrl = 'https://example.com/checkout/*' window.onload = startup() function st
一些不是我编写的应用程序,也不是用 PHP 编写的,它为域 www.example.com 创建了一个 cookie。 我正在尝试替换该 cookie。所以在 PHP 中我做到了: setcookie
什么是 oauth 域?是否有任何免费的 oauth 服务?我可以将它用于 StackApps registration 吗? ?我在谷歌上搜索了很多,但找不到答案。 最佳答案 这是redirect_
自从 In October 2009, the Internet Corporation for Assigned Names and Numbers (ICANN) approved the cre
我使用 apache 作为我的应用程序 Web 服务器的代理,并希望即时更改与 sessionid cookie 关联的域名。 该cookie有一个与之关联的.company.com域,我想使用apa
我只想托管一个子域到cloudflare。我不想将主域名的域名服务器更改为他们的域名服务器。真的有可能吗? 最佳答案 是的,这是可能的,但是需要通过CloudFlare合作伙伴进行设置,或者您需要采用
When using socket in the UNIX domain, it is advisable to use path name for the directory directory m
想象两个共享一个域类的 Grails 应用程序。也许是 Book 域类。 一个应用程序被标识为数据的所有者,一个应用程序必须访问域数据。类似于亚马逊和亚马逊网络服务。 我想拥有的应用程序将使用普通的域
我有一个包含字段“URL”的表单。第一部分需要用户在文本框中填写。第二部分是预定义的,显示在文本框的右侧。 例如,用户在文本框中输入“test”。第二部分预定义为“.example.com”。因此,总
如果我要关闭并取消分配 azure 中的域 Controller ,从而生成新的 vm Generationid,我需要采取哪些步骤来恢复它? 最佳答案 what steps do I need to
我想尝试使用 Azure 作为托管提供商(我有一个域)。我读过那篇文章https://learn.microsoft.com/en-us/azure/app-service-web/web-sites
所以.... 我想知道是否有人可以在这方面协助我? 基本上,我已经创建了一个自托管的Docker容器,用作构建代理(Azure DevOps) 现在,我已经开始测试代理,并且由于我们的放置文件夹位于W
我是一名优秀的程序员,十分优秀!