精华内容
下载资源
问答
  • 最近连续两个朋友问我跨域相关问题,我猜想可能不少朋友也遇到类似问题,我打算写个博客聊一下我实际使用的配置, 先说明一下,我并不太了解这配置,没精力去了解太多,但我觉得其中有一些关键的小注意点,可能有些...

    最近连续两个朋友问我跨域相关问题,我猜想可能不少朋友也遇到类似问题,我打算写个博客聊一下我实际使用的配置,

    先说明一下,我并不太了解这配置,没精力去了解太多,但我觉得其中有一些关键的小注意点,可能有些初学者不太注意到,导致配置有问题,本文章可能只对新手有点帮助,如果你有好配置,欢迎评论回复,让大家学习!

    Nginx的CORS配置,网上太多这配置了,但大家更多的复制粘贴、转发,几乎都是类似下面这三两行:

    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Headers X-Requested-With;
    add_header Access-Control-Allow-Methods GET,POST,OPTIONS;

    这样有用么?有用,我以前这样使用也正常过,但后来还是遇到问题了,发现有些项目请求就不成功,也遇到有些浏览器成功,有些浏览器不成功;

    我也在网上查找各种资料和调整写法,最后我调整好的写法,基本的使用没问题,我在项目中也一直使用着!

    下面发一段我实际项目中的部分配置:

    location /aoda-web {
    	add_header 'Access-Control-Allow-Origin' $http_origin;
    	add_header 'Access-Control-Allow-Credentials' 'true';
    	add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    	add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
    	add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
    	if ($request_method = 'OPTIONS') {
    		add_header 'Access-Control-Max-Age' 1728000;
    		add_header 'Content-Type' 'text/plain; charset=utf-8';
    		add_header 'Content-Length' 0;
    		return 204;
    	}
    	root   html;
    	index  index.html index.htm;
    	proxy_pass http://127.0.0.1:8080;
    	proxy_set_header Host $host;
    	proxy_set_header X-Real-IP $remote_addr;
    	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    	proxy_set_header X-Forwarded-Proto $scheme;
    	proxy_connect_timeout 5;
    }
    

    跨域相关的配置,主要是下面这部分:

    	add_header 'Access-Control-Allow-Origin' $http_origin;
    	add_header 'Access-Control-Allow-Credentials' 'true';
    	add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    	add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
    	add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
    	if ($request_method = 'OPTIONS') {
    		add_header 'Access-Control-Max-Age' 1728000;
    		add_header 'Content-Type' 'text/plain; charset=utf-8';
    		add_header 'Content-Length' 0;
    		return 204;
    	}

    下面简单讲解一下,以便大家配置成功!

    1、Access-Control-Allow-Origin,这里使用变量 $http_origin取得当前来源域,大家说用“*”代表允许所有,我实际使用并不成功,原因未知;

    2、Access-Control-Allow-Credentials,为 true 的时候指请求时可带上Cookie,自己按情况配置吧;

    3、Access-Control-Allow-Methods,OPTIONS一定要有的,另外一般也就GET和POST,如果你有其它的也可加进去;

    4、Access-Control-Allow-Headers,这个要注意,里面一定要包含自定义的http头字段(就是说前端请求接口时,如果在http头里加了自定义的字段,这里配置一定要写上相应的字段),从上面可看到我写的比较长,我在网上搜索一些常用的写进去了,里面有“web-token”和“app-token”,这个是我项目里前端请求时设置的,所以我在这里要写上;

    5、Access-Control-Expose-Headers,可不设置,看网上大致意思是默认只能获返回头的6个基本字段,要获取其它额外的,先在这设置才能获取它;

    6、语句“ if ($request_method = 'OPTIONS') { ”,因为浏览器判断是否允许跨域时会先往后端发一个 options 请求,然后根据返回的结果判断是否允许跨域请求,所以这里单独判断这个请求,然后直接返回;

    好了,按我上面配置基本都可使用(有些朋友确定只百度复制了两行,然后说配置好了,跟前端朋友互扯),

    下面发一个实际配置供参考,我做了少量更改,如下:

    server {
    	listen       80;
    	server_name  xxx.com;
    
    	location /xxx-web/papi {
    		add_header 'Access-Control-Allow-Origin' $http_origin;
    		add_header 'Access-Control-Allow-Credentials' 'true';
    		add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    		add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
    		add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
    		if ($request_method = 'OPTIONS') {
    			add_header 'Access-Control-Max-Age' 1728000;
    			add_header 'Content-Type' 'text/plain; charset=utf-8';
    			add_header 'Content-Length' 0;
    			return 204;
    		}
    		root   html;
    		index  index.html index.htm;
    		proxy_pass http://127.0.0.1:7071;
    		proxy_set_header Host $host;
    		proxy_set_header X-Real-IP $remote_addr;
    		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    		proxy_set_header X-Forwarded-Proto $scheme;
    		proxy_connect_timeout 5;
    	}
    
    	location /xxx-web {
    		add_header 'Access-Control-Allow-Origin' $http_origin;
    		add_header 'Access-Control-Allow-Credentials' 'true';
    		add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    		add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
    		add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
    		if ($request_method = 'OPTIONS') {
    			add_header 'Access-Control-Max-Age' 1728000;
    			add_header 'Content-Type' 'text/plain; charset=utf-8';
    			add_header 'Content-Length' 0;
    			return 204;
    		}
    		root   html;
    		index  index.html index.htm;
    		proxy_pass http://127.0.0.1:8080;
    		proxy_set_header Host $host;
    		proxy_set_header X-Real-IP $remote_addr;
    		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    		proxy_set_header X-Forwarded-Proto $scheme;
    		proxy_connect_timeout 5;
    	}
    
    	location / {
    		root   /var/www/xxx/wechat/webroot;
    		index  index.html index.htm;
    	}
    
    	error_page   500 502 503 504  /50x.html;
    	location = /50x.html {
    		root   html;
    	}
    }
    

     

    (完)

     

    展开全文
  • 依赖库: pip installdjango-cors-headers 配置settings: 然后在 注意这个尽量放在第一位。 然后:

    依赖库:

    pip install django-cors-headers

    配置settings:

    然后在

    注意这个尽量放在第一位。

    然后:

    展开全文
  • 图片跨域报错: 解决方法: add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Headers X-Requested-With; add_header Access-Control-Allow-Methods GET,POST,OPTIONS; *****将上面...

    图片跨域报错:

    解决方法:

    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Headers X-Requested-With;
    add_header Access-Control-Allow-Methods GET,POST,OPTIONS;


    *****将上面的3行代码放入服务器nginx配置文件中*****

    一开始我直接将3行代码放入server下面不行还是报错,报另外一种错误

    后来在想想我是图片报跨域错误是不是需要将这个设置放到图片的请求里面然后-----》

    解决问题。

    ps:::在网上还找到别人解决接口跨域的问题,感觉很不错,先收藏一下

    最近连续两个朋友问我跨域相关问题,我猜想可能不少朋友也遇到类似问题,我打算写个博客聊一下我实际使用的配置,

    先说明一下,我并不太了解这配置,没精力去了解太多,但我觉得其中有一些关键的小注意点,可能有些初学者不太注意到,导致配置有问题,本文章可能只对新手有点帮助,如果你有好配置,欢迎评论回复,让大家学习!

    Nginx的CORS配置,网上太多这配置了,但大家更多的复制粘贴、转发,几乎都是类似下面这三两行:

    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Headers X-Requested-With;
    add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
    这样有用么?有用,我以前这样使用也正常过,但后来还是遇到问题了,发现有些项目请求就不成功,也遇到有些浏览器成功,有些浏览器不成功;

    我也在网上查找各种资料和调整写法,最后我调整好的写法,基本的使用没问题,我在项目中也一直使用着!

    下面发一段我实际项目中的部分配置:

    location /aoda-web {
        add_header 'Access-Control-Allow-Origin' $http_origin;
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
        add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
        if ($request_method = 'OPTIONS') {
            add_header 'Access-Control-Max-Age' 1728000;
            add_header 'Content-Type' 'text/plain; charset=utf-8';
            add_header 'Content-Length' 0;
            return 204;
        }
        root   html;
        index  index.html index.htm;
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_connect_timeout 5;
    }
    跨域相关的配置,主要是下面这部分:

        add_header 'Access-Control-Allow-Origin' $http_origin;
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
        add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
        if ($request_method = 'OPTIONS') {
            add_header 'Access-Control-Max-Age' 1728000;
            add_header 'Content-Type' 'text/plain; charset=utf-8';
            add_header 'Content-Length' 0;
            return 204;
        }
    下面简单讲解一下,以便大家配置成功!

    1、Access-Control-Allow-Origin,这里使用变量 $http_origin取得当前来源域,大家说用“*”代表允许所有,我实际使用并不成功,原因未知;

    2、Access-Control-Allow-Credentials,为 true 的时候指请求时可带上Cookie,自己按情况配置吧;

    3、Access-Control-Allow-Methods,OPTIONS一定要有的,另外一般也就GET和POST,如果你有其它的也可加进去;

    4、Access-Control-Allow-Headers,这个要注意,里面一定要包含自定义的http头字段(就是说前端请求接口时,如果在http头里加了自定义的字段,这里配置一定要写上相应的字段),从上面可看到我写的比较长,我在网上搜索一些常用的写进去了,里面有“web-token”和“app-token”,这个是我项目里前端请求时设置的,所以我在这里要写上;

    5、Access-Control-Expose-Headers,可不设置,看网上大致意思是默认只能获返回头的6个基本字段,要获取其它额外的,先在这设置才能获取它;

    6、语句“ if ($request_method = 'OPTIONS') { ”,因为浏览器判断是否允许跨域时会先往后端发一个 options 请求,然后根据返回的结果判断是否允许跨域请求,所以这里单独判断这个请求,然后直接返回;

    好了,按我上面配置基本都可使用(有些朋友确定只百度复制了两行,然后说配置好了,跟前端朋友互扯),

    下面发一个实际配置供参考,我做了少量更改,如下:

    server {
        listen       80;
        server_name  xxx.com;
     
        location /xxx-web/papi {
            add_header 'Access-Control-Allow-Origin' $http_origin;
            add_header 'Access-Control-Allow-Credentials' 'true';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
            add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
            if ($request_method = 'OPTIONS') {
                add_header 'Access-Control-Max-Age' 1728000;
                add_header 'Content-Type' 'text/plain; charset=utf-8';
                add_header 'Content-Length' 0;
                return 204;
            }
            root   html;
            index  index.html index.htm;
            proxy_pass http://127.0.0.1:7071;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_connect_timeout 5;
        }
     
        location /xxx-web {
            add_header 'Access-Control-Allow-Origin' $http_origin;
            add_header 'Access-Control-Allow-Credentials' 'true';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
            add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
            if ($request_method = 'OPTIONS') {
                add_header 'Access-Control-Max-Age' 1728000;
                add_header 'Content-Type' 'text/plain; charset=utf-8';
                add_header 'Content-Length' 0;
                return 204;
            }
            root   html;
            index  index.html index.htm;
            proxy_pass http://127.0.0.1:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_connect_timeout 5;
        }
     
        location / {
            root   /var/www/xxx/wechat/webroot;
            index  index.html index.htm;
        }
     
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
     

     

     

     

    展开全文
  • ![图片说明](https://img-ask.csdn.net/upload/202004/14/1586834358_586962.png) 我知道接口的端口不同,倒是这个端口是本地编辑器给的,我改不了, 求大神解决,前端小白一个
  • 目前cors是最常用解决方案,其他的可以不要学了(大佬忽略),这是由后端解决跨域的方案。 在这之前,为了安全不需要跨域访问。在这之后推出一种验证模式,你可以设置一些地址可以访问 分简单请求和复杂请求,复杂...

    跨域科普

    这里的域指的是协议+域名+端口号,当目标url的协议、域名、端口号三者都和我们网站本身的url一样时,被认为同域,不一样则认为跨域,浏览器会对跨域的请求进行限制,出于安全方面的考虑。因此只有浏览器会遇到限制,而在node环境发起同样的请求不会受限制。

    什么是cors

    目前cors是最常用解决方案,其他的可以不要学了(大佬忽略),这是由后端解决跨域的方案。

    • 在这之前,为了安全不需要跨域访问。在这之后推出一种验证模式,你可以设置一些地址可以访问
    • 分简单请求和复杂请求,复杂请求之前会有个option请求刺探下军情,不合适会给你反馈。
    • Access-Control-Allow-Origin: 指定域名 * 号代表允许所有域访问
      在这里插入图片描述

    使用cors

    自行搜博客把。。就配置一下Access-Control-Allow-Origin。不同语言可能造成误导
    对于要求不高的node新手:就这一行代码(中间件),默认是允许所有域访问

    先npm i cors

    app.use(require('cors')())
    
    展开全文
  • 跨域CORS

    2019-07-25 00:18:32
    跨域CORS 我们为前端和后端分别设置了两个不同的域名 位置 域名 前端 www.aaa.site 后端 api.bbb.site 现在,前端与后端分处不同的域名,我们需要为后端添加跨域访问的支持。 我们使用CORS来解决后端对跨域访问...
  • 跨域CORS 现在,前端与后端分处不同的域名,我们需要为后端添加跨域访问的支持。 我们使用CORS来解决后端对跨域访问的支持。 使用django-cors-headers扩展安装 pip install django-cors-headers 1.添加应用 ...
  • 前后端分离框架前端react,后端springboot跨域问题分析为啥跨域了前端react的设置springboot后端设置 为啥跨域了 由于前后端不在一个端口上,也是属于跨域问题的一种,所以必须解决这个问题. 前端react的设置 react...
  • 后端跨域方式

    2020-04-17 18:05:13
    cors nodejs设置允许所有域名跨域(下面代码放在请求前): ... //设置允许跨域的域名,*代表允许任意域名跨域 res.header("Access-Control-Allow-Origin", "*"); //允许的header类型 res.header("Access-...
  • 跨域CORS 我们现在为前端和后端分别设置两个不同的域名 window 系统: C:\Windows\System32\drivers\etc\host linux/mac系统: /etc/hosts 位置域名 前端 www.luffycity.cn 后端 api.luffycity....
  • // 通过跨域里面的cors跨域// 跨域中间件app.use(function (req, res, next) { // 设置cors跨域 res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "X-Requested-With")...
  • 跨域CORS设置

    千次阅读 2018-09-16 14:39:15
    前端需要数据时,发送ajax请求,后端处理后,提供数据服务。 1.设置hosts文件 编辑/etc/hosts文件,可以设置本地域名 sudo vim /etc/hosts 在文件中增加两条信息 127.0.0.1 api.meiduo.site 127.0....
  • 学习通过后端配置cors游览器解决跨域访问 现在的游览器ie10以上的都可以浏览器直接发出CORS请求。体来说,就是在头信息之中,增加一个Origin字段。然后node后端 router.get('/getData', function(req, res, next) { ...
  • django后端设置允许csrf跨域请求 首先pip安装django-cors-headers 在settings中配置如下 INSTALLED_APPS = [ ...... 'corsheaders', ...... ] MIDDLEWARE = [ ...... 'corsheaders.middleware.CorsMiddleware'...
  • 后端跨域配置

    2021-01-08 20:06:38
    后端跨域配置 安装 django-cors-headers 包 pip install django-cors-headers 设置INSTALL_APPS INSTALLED_APPS = [ ... 'corsheaders', ...设置跨域白名单 # CORS跨域请求白名单设置 CORS_ORIGI
  • 1.问题引入 对于利用django框架实现前后端分离的项目来说,经常要解决的问题就是跨域跨域请求。何为跨域请求?...前端需要数据时,发送ajax/axios请求,后端处理后,提供数据服务。举个例子,htt...
  • 2.后端设置一个cookie发送给前台,domain应该是setDomain(“abc.com”),而不是setDomain(“B.abc.com”) 3.另外,还要实现WebMvcConfigurerr配置加入Cors跨域 @Configuration public class WebConf....
  • 1、使用django-cors-headers扩展,但首先进行安装 2、在配置中添加应用 ...4、添加CORS的白名单:凡是在白名单中的域名,都可以访问后端接口 转载于:https://www.cnblogs.com/weiliang123/p/9636030.html...
  • 简单来说,CORS是一种访问机制,英文全称是Cross-Origin Resource Sharing,即我们常说的跨域资源共享,通过在服务器端设置响应头,把发起跨域的原始域名添加到Access-Control-Allow-Origin 即可。 创建新的...
  • 跨域的三种解决方案跨域什么是前端跨域怎么去解决跨域CORS跨域JSONP跨域jsonp与cors的区别:接口代理 跨域 什么是前端跨域 前端独有,是浏览器为了安全而做出的限制策略。 浏览器请求必须遵循同源策略:同域名、同...
  • CORS跨域设置 CORS(Cross-originresourcesharing),跨域资源共享,是一份浏览器技术的规范,用来避开浏览器的同源策略 简单来说就是解决跨域问题的除了jsonp外的另一种方法;比jsonp更加优雅。 options是浏览器...
  • Nginx 设置cors跨域

    2018-08-13 00:31:00
    在web服务器上进行设置cors 跨域,这样就不必改动代码。以nginx为例子 提示:有时候我们的后端是PHP文件,则需要把跨域的代码加 location ~ \.php(.*)$ 中。 location / { if ($request_m...
  • 最后发现是后端没有设置跨域。 System.Web.Cors.dll、System.Web.Http.Cors在nuget直接是找不到的,最后发现知识对应的名字不一样。 System.Web.Cors.dll对应Microsoft.AspNet.Cors System.Web.Http.Cors对应...
  • 2.经验教训:但凡前端不能够请求到数据以及返回各种乱七八糟代码,都是后端问题,没有做好CORS设置。 3.首先需要下载cors-filter-1.7.jar,java-property-utils-1.9.jar这两个jar包,放入lib目录;后面有链接; 4....
  • 一、Ajax 跨域请求 Ajax 请求一个目标地址为... 后端解决(Django):CORS 专门解决方案 这篇文章主要介绍使用 Django 框架进行开发时的后端解决方案。 三、Django 解决跨域问题 Django 框架中通过 django-cors-head

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 253
精华内容 101
关键字:

后端设置跨域cors