一、什么是跨域

  跨域是浏览器对JavaScript同源策略的限制

二、什么情况下会产生跨域

域名不同 wwww.baidu.com www.jd.com
域名相同,访问的端口不同 wwww.baidu.com:8080 wwww.baidu.com:8081
一级域名相同,二级域名不用 map.baidu.com pan.baidu.com

三、为什么会产生跨域问题

  跨域不一定都会有跨域问题,因为跨域问题是浏览器对于ajax请求的一种安全限制:一个页面发起的ajax请求,只能是与当前页域名相同的路径,这能有效的阻止跨站攻击。

因此:跨域问题 是针对ajax的一种限制。

四、如何解决跨域问题

    1、在nginx下的nginx.conf文件中配置要访问的域名和端口号,比如:

  

server {
listen 80;
server_name aaaa.com; proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location / {
proxy_pass http://127.0.0.1:8888;
proxy_connect_timeout 600;
proxy_read_timeout 600;
}
}
server {
listen 80;
server_name bbbb.com; proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location / {
proxy_pass http://127.0.0.1:9999;
proxy_connect_timeout 600;
proxy_read_timeout 600;
}
}

在nginx的配置文件中配置了两个域名,aaaa.com和bbbb.com,分别通过8888和9999两个端口来访问它们,端口的域名都要是项目中使用的域名,不可随意取。

  2、在hosts文件中把域名和对应的ip配置好,如:

127.0.0.1 aaaa.com
127.0.0.1 aaaa.com

  这里配置的域名要和ngnix中配置的域名相同

  3、在项目中定义一个过滤器,让数据可以进行跨域访问

  

@Configuration
public class LeyouCorsConfig { @Bean
public CorsFilter corsFilter(){
//初始化Cors配置对象
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowCredentials(true);//允许携带cookie
configuration.addAllowedOrigin("http://manage.leyou.com");//允许这个域名进行跨域访问
configuration.addAllowedHeader("*");//允许携带任何头信息
configuration.addAllowedMethod("*");//代表所有的请求方法:POST GET PUT Delete //初始化Cors配置源对象
UrlBasedCorsConfigurationSource configurationSource = new UrlBasedCorsConfigurationSource();
configurationSource.registerCorsConfiguration("/**", configuration);//所有路径都需要解决跨域路径访问问题 //返回CorsFilter
System.out.println("可以进行跨域操作了=============================");
return new CorsFilter(configurationSource); } }

java 解决nginx代理的跨域访问问题的更多相关文章

  1. nginx介绍(六) - 通过反向代理实现跨域访问

    前言 跨域访问问题, 相信很多人都遇到过, 并且都用不同的办法去解决过. 方法有很多种, 不一一叙述了. 这里主要使用nginx反向代理来解决跨域问题. 啥是跨域 假如你是百度开发人员, 在百度页面去 ...

  2. web代理进行跨域访问

    通过web代理进行跨域访问,http请求返回超时的问题定位   [现象] 在ajax通过web代理跨域访问时,http第一次登陆时正常,但是第二次再下发其他命令的时候总是返回 java.net.Soc ...

  3. 解决nginx发布网站跨目录访问

    解决nginx发布网站跨目录访问(thinkphp5+lnmp) 到:usr/local/nginx/conf/vim fastcgi.cof 把最后一行加上井号#注释掉保存重启 restart 参考 ...

  4. 通过web代理进行跨域访问,http请求返回超时的问题定位

    [现象] 在ajax通过web代理跨域访问时,http第一次登陆时正常,但是第二次再下发其他命令的时候总是返回 java.net.SocketTimeoutException: Read timed ...

  5. Vue之通过代理设置跨域访问

    我们使用脚手架创建的项目,可以在config项目中看到

  6. nginx:支持跨域访问

    在http节点中配置: #支持跨域访问 add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Header ...

  7. 解决Django本地接口不能跨域访问的问题

    1.安装django-cors-headers模块: pip install django-cors-headers 2.插入Django的APP配置中: # 修改settings.py中的INSTA ...

  8. 用反向代理nginx proxy_pass配置解决ie8 ajax请求被拦截问题 ie8用nginx代理实现跨域请求访问 nginx405正向代理request_uri

    最近调PC版网站ie8的兼容性,发现所有ajax请求还没到后端服务器就直接ajax error了 ie8发不出ajax请求,断点调试发现ajax全进入了error,提示“No transport” 我 ...

  9. 解决jquery ajax在跨域访问post请求的时候,ie9以下无效(包括ie9)的问题

    最近在做项目的时候遇到一个问题,就是跨域请求ajax的时候ie9以下的浏览器不可以访问,直接执行error里面的代码,但是也不报错,就上网查了查,发现了一个很好用的方法,在这里记录一下,也希望可以帮到 ...

随机推荐

  1. SQL Server DBCC命令大全

    原文出处:https://www.cnblogs.com/lyhabc/archive/2013/01/19/2867174.html DBCC DROPCLEANBUFFERS:从缓冲池中删除所有缓 ...

  2. spring boot 源码解析52-actuate中MVCEndPoint解析

    今天有个别项目的jolokia的endpoint不能访问,调试源码发现:endpoint.enabled的开关导致的. 关于Endpoint, <Springboot Endpoint之二:En ...

  3. AngularJS 的全选、反选实现

    目录 AngularJS 的全选.反选实现 一.需求 二.思路 三.实现 AngularJS 的全选.反选实现 一.需求 要使用 AngularJS 实现 checkbox 的全选.反选. 其中所有项 ...

  4. Java学习:构造方法

    构造方法: 构造方法是专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是再调用构造函数. 格式: public 类名称(参数类型 参数名称){ 方法体 } 注意事项: 构造方法的名称 ...

  5. 关于vs无法创建虚拟目录的问题

    插入链接:https://blog.csdn.net/zhao1955/article/details/92182935 补充:改完之后不要忘记以管理员的身份运行vs

  6. C#写入Excel文件方式

    由于在工作中经常要把数据库的统计数据导入Excel文件,进行IO磁盘操作,所以在这里记录下. 首先创建默认文件夹,并返回文件夹路径. private static string CPath(strin ...

  7. 2019 草花手游java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.草花手游等公司offer,岗位是Java后端开发,因为发展原因最终选择去了草花手游,入职一年时间了,也成为了面 ...

  8. Mybatis事物浅谈

    本篇文章主要对Mybatis事物进行基础的介绍.先回顾JDBC事物,再了解Mybatis里面的事物应用. 1.JDBC的事务管理回顾 JDBC的事务管理是基于Connection对象实现的: 开启事务 ...

  9. Redux 和React 结合

    当Redux 和React 相接合,就是使用Redux进行状态管理,使用React 开发页面UI.相比传统的html, 使用React 开发页面,确实带来了很多好处,组件化,代码复用,但是和Redux ...

  10. PHP获取当前脚本的绝对路径方法

    一.dirname(__FILE__) 比如:a.php所在路径为/var/www/web/a.php dirname(__FILE__)返回的则是/var/www/web/ 二.__DIR__ a. ...