文章目录

  • 1.同源策略
  • 2.后端解决跨域问题
    • 2.1目标方法加上 @CrossOrigin
    • 2.2添加CROS过滤器
    • 2.3实现WebMvcConfigurer接口
  • 3.Nginx解决跨域
    • 3.1解决iconfont跨域
    • 3.2反向代理接口跨域
  • 4.其它跨域解决方案

1.同源策略

同源策略是浏览器的一种安全策略,违背同源策略就是跨域
同源:协议,域名,端口号必需完全相同

一个URL由如下组成

2.后端解决跨域问题

2.1目标方法加上 @CrossOrigin

@RequestMapping("/getUsername")
@CrossOrigin
public String getUsername(HttpSession session){String username=(String) session.getAttribute("user");return username;
}

2.2添加CROS过滤器

@Configuration
public class CorsConfig {@Beanpublic CorsFilter corsFilter() {CorsConfiguration corsConfiguration = new CorsConfiguration();corsConfiguration.addAllowedOrigin("*");corsConfiguration.addAllowedHeader("*");corsConfiguration.addAllowedMethod("*");UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();source.registerCorsConfiguration("/**",corsConfiguration);return new CorsFilter(source);}
}

2.3实现WebMvcConfigurer接口

@Configuration
public class CorsConfiguration implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOriginPatterns("*").allowedMethods("GET","POST","PUT","DELETE","HEAD","OPTIONS").allowCredentials(true)//是否允许携带Cookie.maxAge(3600)//3600s之类浏览器不会再次询问.allowedHeaders("*");}
}

3.Nginx解决跨域

3.1解决iconfont跨域

浏览器跨域访问js、css、img等常规静态资源被同源策略许可,但iconfont字体文件(eot|otf|ttf|woff|svg)例外,此时可在nginx的静态资源服务器中加入以下配置

location / {add_header Access-Control-Allow-Origin *;
}

3.2反向代理接口跨域

同源策略是浏览器的安全策略,不是HTTP协议的一部分。
服务器端调用HTTP接口只是使用HTTP协议,不会执行JS脚本,不需要同源策略,也就不存在跨越问题。

实现思路:通过Nginx配置一个代理服务器(域名与domain1相同,端口不同)做跳板机,反向代理访问domain2接口,并且可以顺便修改cookiedomain信息,方便当前域cookie写入,实现跨域登录。

#proxy服务器
server {listen       81;server_name  www.domain1.com;location / {proxy_pass   http://www.domain2.com:8080;  #反向代理proxy_cookie_domain www.domain2.com www.domain1.com; #修改cookie里域名index  index.html index.htm;# 当用webpack-dev-server等中间件代理接口访问nignx时,此时无浏览器参与,故没有同源限制,下面的跨域配置可不启用add_header Access-Control-Allow-Origin http://www.domain1.com;  #当前端只跨域不带cookie时,可为*add_header Access-Control-Allow-Credentials true;}
}

4.其它跨域解决方案

前端常见跨域解决方案 传送门(点我)

总结:简单的跨域请求Jsonp即可,复杂的CORS,窗口之间JS跨域postMessage,开发环境下接口跨域用Nginx反向代理或Node中间件比较方便

【JavaWeb】跨域问题的多种解决方案相关推荐

  1. 网站跨域问题的多种解决方案

    1.什么是网站跨域 跨域原因产生:在当前域名请求网站中,默认不允许通过ajax请求发送其他域名. 2.网站跨域报错案例 jquery-1.7.2.min.js?t=2017-07-27:4 Faile ...

  2. iframe跨域通信的通用解决方案-第二弹!(终极解决方案)

    一年前,我发过一篇关于跨文档通信方案的文章<iframe跨域通信的通用解决方案>,提供了一种基于创建iframe与轮询window.name的方案. 一年后,很高兴地带来彻底改造的新版本. ...

  3. 浏览器跨域问题以及常用解决方案

    浏览器的同源策略 跨域的根本原因就是因为浏览器的同源策略,这是浏览器出于安全性考虑做出的限制,所谓同源是指:域名.协议.端口相同. 比如在互联网上有两个资源(网页或者请求等),如果A想要访问B的资源, ...

  4. ajax 跨域请求数据,JQuery Ajax执行跨域请求数据的解决方案

    JQuery Ajax执行跨域请求数据的解决方案 今天前端因为需要ajax调用两个不同的项目,请求域不一样,所以涉及ajax跨域的问题 ,其实很简单,具体如下 原来的ajax请求如下: $.ajax( ...

  5. 不同版本浏览器前端标准兼容性对照表以及CORS解决跨域和CSRF安全问题解决方案

    CORS也已经成为主流的跨域解决方案,不过CORF也会引发CSRF,本文先分享第三方的一个前端工具箱全面展示那些浏览器版本支持CORS,由于各家浏览器厂商因为各自原因在不同的版本里支持的标准不同,这个 ...

  6. 跨域的原因以及解决方案

    # 为什么会产生跨域问题 浏览器限制,目前所有浏览器都实现了同源策略规范. 请求方式Type为xhr.如果非xhr,如json,script则也不会存在跨域问题 请求方与服务方的源不同,即跨域,包括: ...

  7. 前端经常遇到的跨域问题几种解决方案

    跨域(非同源策略请求) 同源策略请求 ajax/fetch 跨域传输 部署到同一个web服务器上:同源策略 xampp 修改本地的host文件 127.0.0.1:1234 http://api.qq ...

  8. 同源策略、跨域以及跨域的三种解决方案详解

    浏览器并非限制了http发起的请求,跨域请求可以正常发起,但是返回结果会被浏览器拦截. CORS的核心就在于 让服务器来确定是否允许跨域访问. 1.服务器代理: 2.cors跨域资源共享: 3.JSO ...

  9. 前端跨域问题汇总及解决方案

    "关注  前端开发社区 ,回复" 1" 即可加入  前端技术交流群,回复  " 2" 即可免费领取500G前端干货! 来源 | https://seg ...

最新文章

  1. ajax提交数据到后台php接收
  2. 引领潮流云电视机遇与挑战并现
  3. 【C语言】控制台窗口图形界面编程(三)窗口相关设置
  4. 项目——迁移/home分区
  5. Xcode添加静态库以及编译选项配置常见问题
  6. php 树状数组公式,PY个树状数组
  7. python中面向对象的特殊成员_Python面向对象特殊成员
  8. python是开源的它可以被移植到许多平台上对吗_Python程序设计答案
  9. 【引用】如何结束线程运行(转)
  10. 要搞懂 volatile 关键字,就靠这 26 张图
  11. 批量下载CSS中的图片
  12. python基础教程doc_python基础教程之Word Cloud (词云) - Python|python基础教程|python入门|python教程...
  13. 【力扣-动态规划入门】【第 4 天】45. 跳跃游戏 II
  14. DiI(细胞膜红色荧光探针)被广泛应用于神经等细胞或组织的示踪剂或长期示踪剂
  15. 会议OA项目之我的审批
  16. 古人对梦的解释_中国古代对梦的解释-精选文档
  17. Openbravo官方教程: 翻译Openbravo
  18. SARscape报错Overlap size too small 解决方案
  19. 可以在手机制作游戏的软件
  20. 练手臂哑铃用多少公斤合适?内行人一语道破!

热门文章

  1. DeepUbi: a deep learning framework for prediction of ubiquitination sites in proteins
  2. zzw原创_oracle循环中的异常捕捉_捕捉异常后并继续循环
  3. NLP:自然语言处理技术之词语级别相关术语解释(如上位词/WordNet)、基于词汇层面的词法分析六大任务(分词/词性标注/词干提取-词形还原/新词发现/形态分析/拼写校正)的简介及其应用
  4. 在 mac 下遇到一个强力的软件:火萤视频桌面
  5. 全国计算机等级考试报名流程及报名照片在线制作教程(详细)
  6. 机器学习——K近邻算法(KNN)(K Nearest Neighbor)
  7. 一文搞懂slq 左右连接
  8. 中年男子隐居岳麓山脚11年 只为续写《红楼梦》
  9. no such file or directory @ realpath_rec xxx.xib
  10. 三折页模板|超容易创建适合您的业务的宣传小册子