1. HTTP协议
1.1 HTTP请求格式
1.2 HTTP响应格式
1.3 HTTP状态码
常见的HTTP状态码
GET
- HEAD
- POST
- PUT
- DELETE
- TRACE
- OPTIONS
- CONNECT
1.5 Session、Cookie、Token
- Seesion
- 作用:服务端存储的一个对象,用于识别客户端角色或者信息
- 存储位置:客户端会存储sessionId,服务端会存储session完整信息
- Cookie
- 作用:cookie是一小段的文本信息(key-value格式)。客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。
- 保存位置:客户端
- 主要包括信息:
- key-value:name=value,
- 过期时间:MaxAge 当为-1时表示已过期,0时表示立即删除
- 域名:domain,
- 路径:path
- 安全:secure
- httpOnly:
- 二级域名共享:domain设置成
**.domain.com**
- 最大长度:4096字节
- Token
- 作用:主要用于认证之类的
- LocalStorage
- 作用:存储信息在浏览器端端本地内存中。
1.6 HTTP的一些特点
1.7 跨域问题
- 什么是跨域
- 浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域
- 域名:
- 端口:
- 协议:
- 备注:
- 1、端口和协议的不同,只能通过后台来解决
- 2、localhost和127.0.0.1虽然都指向本机,但也属于跨域
后端允许解决方案
FIlter:允许整个项目跨域访问,可通过filter来进行过虑
@Override
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");
chain.doFilter(req, res);
}
Response 添加头信息,允许单个方法跨域访问
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");
CORS 配置同源 (CORS是一个W3C标准,全称是”跨域资源共享”(Cross-origin resource sharing)
@Configuration
public class CorsConfig {
@Bean
public CorsFilter corsFilter() {
final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
final CorsConfiguration corsConfiguration = new CorsConfiguration();
/*是否允许请求带有验证信息*/
corsConfiguration.setAllowCredentials(true);
/*允许访问的客户端域名*/
corsConfiguration.addAllowedOrigin("*");
/*允许服务端访问的客户端请求头*/
corsConfiguration.addAllowedHeader("*");
/*允许访问的方法名,GET POST等*/
corsConfiguration.addAllowedMethod("*");
urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
return new CorsFilter(urlBasedCorsConfigurationSource);
}
}
使用网关:Nginx、Spring Cloud Gateway、Kong等
HTTPS = HTTP + SSL
- SSL(Secure Sockets Layer,“安全套接层”)