02-Java基础-2
一.ajax中的跨域问题
1.跨域问题产生的原因:
(1):浏览器的限制
跨域限制只有在浏览器环境中才有,是浏览器为了安全考虑对跨域请求做了限制
(2):跨域
请求域名和本站域名 必须是跨域才会触发浏览器的跨域问题
(3):XmlHttpResquest
请求的类型必须是XmlHttpResquest才会引发浏览器的跨域问题
比如说img、script标签中发起的请求就不是XmlHttpRequest类型的,所以可以跨域
2.解决思路:根据跨域问题产生的原因解决思路可以从三方面入手
(1):浏览器禁止检查:可以命令行启动浏览器:chrome --disable-web-security
(2):跨域方面解决:
调用方解决:
调用方隐藏跨域,将需要跨域的请求配置代理进行转发(具体可参考以上博客链接);
比如可以请求自己服务器,由服务器请求跨域资源,之后再返回给前端,因为服务端不存在跨域问题
被调用方解决:
可以在http服务器(apache或者nginx等)或者web服务器(tomcat,weblogic等) 进行设置,
比如Spring中可以在Controller方法上添加@CrossOrigin注解;或者配置过滤器拦截器统一处理;
或者SpringBoot中添加同源Cors(配置类中实例化org.springframework.web.filter.CorsFilter)
主要原理就是在responseHeader中添加允许跨域的头信息(请求头:Access-Control-Allow-Origin),
告诉浏览器该请求是允许跨域的,这也间接说明了另一个问题:跨域请求浏览器是可以正常请求,
并且服务端正常响应的,但是浏览器接收到响应由安全机制判定该请求是跨域请求时,报出跨域请求问题
(3):XmlHttpResquest的解决办法:
只要改变请求的类型不为XmlHttpResquest即可,浏览器就不会报跨域错误;
其中典型的解决方案就是jsonp方式,其原理就是动态创建script标签,然后在script标签中进行跨域请求,script标签中是允许跨域请求的
然后将动态创建的script标签添加到html的header中,请求完毕再移除。
具体详情可参考以上视频连接 二.java中正则使用的注意事项
三.命令行执行可执行jar包时指定编码:-Dfile.encoding=utf-8
四.Java获取环境变量:
五. Process java.lang.Runtime.exec(String command, String[] envp, File dir)
六.java代码加载顺序
七.java8中的新特性 StreamAPI 提供了各种快捷操作数据和流的操作
八.Collections.shuffle(List<?> list)
九.Java中处理大数字(超过16位有效位)的操作类
十.BigDecimal 类可以处理java中的数字精度问题,如果在做支付相关需求时可以用该类
十一.ResourceBundle与Properties
十二.Collections.unmodifiableMap()
十三.Collections中常用静态方法
十四.java文件操作之Path,Paths,Files
十五. jdk1.7新特性 try-with-resource
十六.
Last updated