4.解析域名的步骤
浏览器缓存–>本机系统的dns缓存–>hosts文件–>DNS
被人修改了本地hosts文件 叫域名劫持 ,目前浏览器会一定的防止域名劫持功能
5.hashcode和equals的联系
hashcode 在HashMap中会使用到。get时先看hashcode是否一致,再看equals是否一致,都一致说明是同一个对象
6.跨域问题
描述:当一台服务器资源从另一台服务器(不同 的域名或者端口)请求一个资源或者接口,就会发起一个跨域 HTTP 请求。
现在很多项目开发都是前后端分离的,前端和后端都是独立运行的,后端提供json数据格式。那么两边是不同的ip、端口,跨站点进行资源分享,就是跨域。所以前后端分离就肯定有跨域问题。
同源策略:浏览器出于安全考虑,会限制跨域访问,就是不允许跨域请求资源,要求协议,IP和端口必须都相同,其中有一个不同就会产生跨域问题。(移动端没有这个问题)
解决:CORS 跨源资源共享
(或通俗地译为跨域资源共享)是一种基于 HTTP 头的机制,W3C的标准。
它通过服务器增加一个特殊的Header[Access-Control-Allow-Origin]来告诉客户端跨域的限制,如果浏览器支持CORS、并且判断Origin通过的话,就会允许XMLHttpRequest发起跨域请求。
在响应头中添加Access-Control-Allow-Origin Header。浏览器收到响应后,查看Access-Control-Allow-Origin Header,如果当前域已经得到授权,则将结果返回给JavaScript。否则浏览器忽略此次响应
在请求头 向服务器询问 能否跨域请求,服务器同意后,浏览器就成功访问。
是一种允许当前域(domain)的资源(比如html/js/web service)被其他域(domain)的脚本请求访问的机制,通常由于同域安全策略(the same-origin security policy)浏览器会禁止这种跨域请求。
CORS实现跨域访问
请求头加了东西 服务器接受到后 查看你访问的目标 是否允许跨域。允许,在响应头中会加 Header[Access-Control-Allow-Origin]。
授权方式
方式1:返回新的CorsFilter
方式2:重写WebMvcConfigurer
如果每次都发送请求 先服务器申请 太麻烦
rgmaxAge 设置了这一段时间内 浏览器就不需要跨域询问请求了
方式3:使用注解(@CrossOrigin)
在controller中的方法(handle)上添加@CrossOrigin注解即可。或者在controller类上。局部添加
方式4:手工设置响应头(HttpServletResponse )
@RequestMapping("/hello")
@ResponseBody
public String index(HttpServletResponse response){
response.addHeader("Access-Control-Allow-Origin", "http://localhost:8080");
return "Hello World";
}
一般使用:方式3,方式2在springmvc官网文档中有
补充: