跨域
什么是跨域
浏览器出于安全的考虑,使用 XMLHttpRequest对象发起 HTTP请求时必须遵守同源策略,否则就是跨域的HTTP请求,默认情况下是被禁止的。 同源策略要求源相同才能正常进行通信,即协议、域名、端口号都完全一致。
CORS解决跨域
CORS是一个W3C标准,全称是”跨域资源共享”(Cross-origin resource sharing),允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。
它通过服务器增加一个特殊的Header[Access-Control-Allow-Origin]来告诉客户端跨域的限制,如果浏览器支持CORS、并且判断Origin通过的话,就会允许XMLHttpRequest发起跨域请求。
SpringBoot使用CORS解决跨域
1.使用@CrossOrigin
可以在支持跨域的方法上或者是Controller上加上@CrossOrigin注解
@RestController
@RequestMapping("/user")
@CrossOrigin
public class UserController {
@Autowired
private UserServcie userServcie;
@RequestMapping("/findAll")
public ResponseResult findAll(){
//调用service查询数据 ,进行返回
List<User> users = userServcie.findAll();
return new ResponseResult(200,users);
}
}
2.使用 WebMvcConfigurer 的 addCorsMappings 方法配置CorsInterceptor
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
// 设置允许跨域的路径
registry.addMapping("/**")
// 设置允许跨域请求的域名
.allowedOriginPatterns("*")
// 是否允许cookie
.allowCredentials(true)
// 设置允许的请求方式
.allowedMethods("GET", "POST", "DELETE", "PUT")
// 设置允许的header属性
.allowedHeaders("*")
// 跨域允许时间
.maxAge(3600);
}
}
前端跨域
学习ing~
微服务
【摘自百度】每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据上下文,选择合适的语言、工具对其进行构建。
每个业务访问量不一样,所以将集群的服务器根据业务进行划分
Nginx要重启,无法做到可插拔,所以引入Nacos
Nacos
服务注册中心和服务配置中心的中间件
-
服务注册中心:服务可以注册到中间件上
-
服务配置中心:开发环境、测试环境、生产环境 从配置中心取相应配置
第三方:不需要启动进程,比如log4j打日志 mybatis连接数据库
中间件:你需要用的时候要启动另一个进程,比如Java项目需要启动数据库,数据库就是中间件
Nacos的使用
找到nacos的bin进行cmd
输入startup.cmd -m standalone
运行成功后,在浏览器输入http://localhost:8848/nacoss
出现如下界面
用户名和密码都是nacos
提交之后即可进入nacos
Nacos配置中心
前言:开发测试生产三种不同环境下都需要解包打开配置文件,所以我们使用Naocs来写配置文件。
可参考https://nacos.io/zh-cn/docs/what-is-nacos.html中Nacos Spring Cloud
配置的步骤:
- 更新配置
- 启动服务
创建项目
- 创建一个Spring Initializr的项目
- 在项目中创建一个Spring Initializr的module,并添加如下依赖
- 项目目录如下
- 添加Nacos Configuration依赖后,项目中多了bootstrap.properties文件
如果使用配置中心,则先去找bootstrap.properties或者bootstrap.yaml配置文件,然后根据配置文件中相关的微服务的配置中心地址,从配置中心上下载这个项目的当前配置,将当前配置增量修改到application.properties文件中。
启动配置管理
1.添加依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${latest.version}</version>
</dependency>
2.在 bootstrap.properties
中配置 Nacos server 的地址和应用名
#配置 Nacos server 的应用名
spring.application.name=authconfigtest
#配置 Nacos server 的地址
spring.cloud.nacos.server-addr=localhost:8848
说明:之所以需要配置 spring.application.name
,是因为它是构成 Nacos 配置管理 dataId
字段的一部分。
在 Nacos Spring Cloud 中,dataId
的完整格式如下:
${prefix}-${spring.profiles.active}.${file-extension}
prefix
默认为spring.application.name
的值,也可以通过配置项spring.cloud.nacos.config.prefix
来配置。spring.profiles.active
即为当前环境对应的 profile。注意:当spring.profiles.active
为空时,对应的连接符-
也将不存在,dataId 的拼接格式变成${prefix}.${file-extension}
file-exetension
为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension
来配置。目前只支持properties
和yaml
类型。
3.在Nacos配置管理中添加配置
在properties文件中配置
spring.profiles.active
spring.profiles.active=dev/test/pro #如果为dev #则dataId为`authconfigtest-dev.properties`
4.启动项目