作业:
-
完成带有验证码的注册功能。
-
博客:redis记录的主从搭配。
完成带有验证码的注册功能
关于vue页面携带cookie到后端,然后request无法识别,解决方案:
参考源:
©️ https://www.ken-chy129.cn/archives/3<CORS跨域请求出现问题>,
©️https://blog.csdn.net/HermitSun/article/details/100797223<axios设置withCredentials导致“跨域”的解决方案>
首先在vue页面的axios配置上更新
import axios from 'axios'
const $request = axios.create({
timeout: 1000000000
});
$request.defaults.withCredentials = true
$request.interceptors.request.use(
config=>{
config.headers['Content-Type']='application/json;charset=utf-8';
return config;
},error=>{
return Promise.reject(error);
}
);
export default $request;
- 如上图中,line8加入一行代码
true
通过dubug运行后,发现cookie可以识别到了,但是产生了另一个问题,是跨域问题
Access to XMLHttpRequest at '...' from origin '...' has been blocked by CORS policy: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.
大概意思是说,在预请求时,请求就失败了。
当请求的证书模式为“include”时(即我们在axios配置的时候写的$request.defaults.withCredentials = true),Access-Control-Allow-Origin不能为 *
这是你的请求没有通过的原因
这个证书模式初始化是通过Ajax的withCredentials属性控制的
查询了一下:
withCredentials的情况下,后端要设置Access-Control-Allow-Origin为你的源地址,例如http://localhost:8080,不能是*,而且还要设置header(‘Access-Control-Allow-Credentials: true’);
于是回去重新更改了一下common模块的跨域配置
@Configuration
public class MarketWebConfig implements WebMvcConfigurer{
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://localhost:8080")
.allowCredentials(true)
.allowedOriginPatterns("*")
.allowedHeaders("*")
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTION")
.maxAge(3600);
}
}
在line6,我写了具体的请求源地址,允许携带Credentials
redis记录的主从搭配
从(slave)的文件夹
[root@localhost redis]# mkdir -p 6380/conf 6380/data 6380/log
[root@localhost log]# touch redis.log
[root@localhost log]# chmod 777 redis.log
[root@localhost log]# ls
redis.log
[root@localhost log]# ll
总用量 0
-rwxrwxrwx. 1 root root 0 7月 13 16:53 redis.log
上传、拷贝配置文件到6380/conf
拷贝主Redis中的conf文件到从的相对应的位置
[root@localhost conf]# cp redis.conf ../../6380/conf
修改redis.conf
这里填的是主Redis的IP和端口
并设置只读配置为no
运行安装从Redis,注意这里的端口号,对外的是6380,对内的不变,相应的挂载的文件夹的路径也要对应到6380
docker run -it \
--name redis_6380 \
--privileged \
-p 6380:6379 \
--network wn_docker_net \
--ip 172.18.12.11 \
-v /usr/local/software/redis/6380/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /usr/local/software/redis/6380/data/:/data \
-v /usr/local/software/redis/6380/log/redis.log:/var/log/redis.log \
-d redis \
/usr/local/etc/redis/redis.conf
查看log文件夹中的redis.log文件!!注意,这个log文档一定要设置权限为777否则run指令会失败,即docker ps中的状态时exit(1)
搭建成功!
log文件!!注意,这个log文档一定要设置权限为777否则run指令会失败,即docker ps中的状态时exit(1)
搭建成功!