CORS

CORS,全称Cross-Origin Resource Sharing,是一种允许当前域(domain)的资源(比如html/js/web service)被其他域(domain)的脚本请求访问的机制,通常由于同域安全策略(the same-origin security policy)浏览器会禁止这种跨域请求。

后端处理跨域问题的几种方法

1.Java过滤器进行过滤

  • 允许整个项目跨域访问,可设置过滤器
@WebFilter("/*")
public class SimpleCORSFilter implements 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.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");

2.Java后端配置同源Cors(推荐)

在 SpringBoot2.0 上的跨域 用以下代码配置

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;@Configuration
public class CorsConfig {@Beanpublic 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);}
}

3.使用nginx做转发

假设现在有两个网站想互相访问接口 在http://a.com:81/A中想访问 http://b.com:81/B 那么进行如下配置即可!然后通过访问 www.my.com/A 里面即可访问 www.my.com/B

server {listen       80;server_name  www.my.com;location /A {proxy_pass  http://a.com:81/A;index  index.html index.htm;}location /B {proxy_pass  http://b.com:81/B;index  index.html index.htm;}
}

如果以上配置都尝试了不行,那么就按照下面这样配置

@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {HttpServletResponse response = (HttpServletResponse) res;HttpServletRequest reqs = (HttpServletRequest) req;response.setHeader("Access-Control-Allow-Origin", "*");response.setHeader("Access-Control-Allow-Credentials", "true");response.setHeader("Access-Control-Allow-Methods", "POST, GET, PATCH, DELETE, PUT, OPTIONS");response.setHeader("Access-Control-Max-Age", "3600");// 此处需要允许自定义的请求头response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, token, Content-Disposition");chain.doFilter(req, res);
}

本文大多数内容来自网络,最后配置是本人经过测试后没问题的最终版。

Java 之 CORS跨域问题相关推荐

  1. 跨域问题JAVA后台设置cors跨域中关于access-control-allow-headers导致的错误

    cors跨域中关于access-control-allow-headers导致的错 1.详细错误信息是: Access to XMLHttpRequest at '[http://appservice ...

  2. 12:CORS跨域设置-Java Spring

    目录 12.1 CORS介绍 12.2 CORS原理 12.3 CORS实现 12.1 CORS介绍 CORS跨域资源共享(Cross-origin resource sharing)是指在服务器端定 ...

  3. java重定向跨域问题_重定向 CORS 跨域请求

    TL;DR 非简单请求不可重定向,包括第一个preflight请求和第二个真正的请求都不行. 简单请求可以重定向任意多次,但如需兼容多数浏览器,只可进行一次重定向. 中间服务器应当同样配置相关 COR ...

  4. spring MVC cors跨域实现源码解析

    spring MVC cors跨域实现源码解析 名词解释:跨域资源共享(Cross-Origin Resource Sharing) 简单说就是只要协议.IP.http方法任意一个不同就是跨域. sp ...

  5. cors跨域_Spring Boot 中通过 CORS 解决跨域问题

    (给ImportNew加星标,提高Java技能) 转自:江南一点雨 今天和小伙伴们来聊一聊通过CORS解决跨域问题. 同源策略 很多人对跨域有一种误解,以为这是前端的事,和后端没关系,其实不是这样的, ...

  6. SpringBoot—CORS跨域问题详解和解决方案

    关注微信公众号:CodingTechWork,一起学习进步. 引言   在前后端开发过程中,遇到过一种错误,类似于报错: Access to XMLHttpRequest at 'http://127 ...

  7. Cors跨域(二):实现跨域Cookie共享的三要素

    高考不努力,工地里当兄弟 前言 你好,我是YourBatman. 上篇文章(Cors跨域(一):深入理解跨域请求概念及其根因)用超万字的篇幅把Cors几乎所有概念都扫盲了,接下来将逐步提出解决方案等实 ...

  8. Spring Boot CORS跨域资源共享实现方案

    同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能 同源策略限制cookie 等信息的跨源网页读取,可以保护本地用户信息 同源策略限制跨域 aja ...

  9. 【编程不良人】快速入门SpringBoot学习笔记06---RestFul、异常处理、CORS跨域、Jasypt加密

    1. RestFul 配套视频:[编程不良人]2021年SpringBoot最新最全教程_哔哩哔哩_bilibili 1.1 引言 REST全称是(Resources) Representationa ...

最新文章

  1. [Bat]UNC路径不支持的2种解决方法
  2. 004_SpringMVC分层配置文件
  3. arduino char*转string_Java 中 String 类的常用方法汇总
  4. 一个解决方案创建多个项目问题解决方案
  5. owncloud mysql版本_Linux Deploy Owncloud php7.0+apache2+mysql5.7+owncloud9.1
  6. mahout0.7 示例运行纪实
  7. 在外面旅游,手机用电怎么解决?
  8. android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)
  9. linux opendir php,php目录遍历函数opendir用法实例
  10. java excel 操作方式_java excel兩種操作方式
  11. SAP计划策略组详细介绍
  12. RDS经典网络平滑迁移到VPC的混访方案
  13. 基础信念(二):框架、专注、勇气
  14. 死亡测试 - GoogleTest(五)
  15. Microsoft Word 教程:如何在 Word 中插入表格?
  16. c 执行oracle 函数,Oracle 下医嘱执行函数
  17. java获取经纬度_java调用高德地图api获取某个位置的经纬度
  18. 数学推导+纯Python实现机器学习算法22:EM算法
  19. android 处理home键,android处理home键的方法
  20. 基于模糊PID的柴油机调速系统

热门文章

  1. 技术管理者应有的 4 种基本思维模式
  2. 2018年春节长假旅游市场预测大数据报告
  3. 对话微软小娜开发总监:小娜如何做个人助理?
  4. SaltStack之salt-master高可用
  5. w ndoWs10开机时间长,Win10开机速度慢怎么解决?
  6. 【Spring】IOC和DI
  7. YCbCr 4:2:2到底是什么意思呢?
  8. list 分批_List集合数据太多进行分批,List的subList方法应用
  9. CSDN年度总结:相遇,相识,相认,相知(菜鸟的CSDN进阶之路)
  10. 云原生的本手、妙手和俗手