博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
跨域问题及解决方案
阅读量:6162 次
发布时间:2019-06-21

本文共 1144 字,大约阅读时间需要 3 分钟。

之前学习写后台的时候,与前端沟通的时候,前端有一次反映过出现了跨域的问题(实际上没出现),这勾起了我对跨域这个东西的兴趣。因为之前在学校学前端的时候,有一次出现了跨域的问题,慌得不行,所以就决定上网冲浪研究一下跨域这个东西。

跨域问题的出现

跨域指的是浏览器从一个域名的网页请求另一个域名时,域名、端口、协议任一不同,都是跨域。

看了一下网上的资料,大概都是说,跨域问题的出现:主要是因为浏览器的同源策略。

浏览器的同源机制

同源机制是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。

前端请求的url必须与浏览器的url处于同域,也就是它们两者的域名、端口、协议必须相同。

同源策略限制以下行为:

  1. Cookie、LocalStorage和IndexDB无法读取
  2. DOM和JS对象无法获取
  3. AJAX请求不能发送

解决方案

在网上看到不少关于跨域的解决方案,在这里讲之前后台大佬解决跨域问题的方案:

CORS(跨域资源共享):

在服务端设置Access-Control-Allow-Origin HTTP响应头部之后,浏览器将会允许跨域请求。

@Overridepublic 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, PUT");    response.setHeader("Access-Control-Max-Age", "3600");    response.setHeader("Access-Control-Allow-Headers",            "Content-Type, x-requested-with, X-Custom-Header, Authorization, token");    chain.doFilter(req, res);}复制代码

转载于:https://juejin.im/post/5c17462a6fb9a04a053f95a7

你可能感兴趣的文章
c++书籍推荐
查看>>
轻松监听Azure service health 状态
查看>>
获取SQL SERVER某个数据库中所有存储过程的参数
查看>>
在Linux下编译安装Apache2(2)
查看>>
Method Swizzling 处理一类简单的崩溃
查看>>
AngularJS学习!
查看>>
在Eclipse中搭建Python Django
查看>>
struts国际化
查看>>
Laravel 5.0 - Middleware (中间件)
查看>>
文件特殊权限及facl
查看>>
我的友情链接
查看>>
Android按两次返回键退出应用
查看>>
第一章:认识Redhat Linux
查看>>
文本查看指令
查看>>
我的友情链接
查看>>
android开源项目框架大全:《IT蓝豹》
查看>>
boost库
查看>>
LeetCode——Longest Consecutive Sequence
查看>>
Python对字典(directory)按key和value排序
查看>>
Azure: 给 ubuntu 虚机挂载数据盘
查看>>