跨域问题

1.跨域原因

在这里插入图片描述
当浏览器访问 www.a.com时,tomcat1给返回一个js,用户看不到。这个js通过ajax去调用另一个服务tomcat2,如果能够调的通,那么就危险了。

所以 w3c标准不允许。当ajax调用www.b.com时,请求头里会放置一个变量 origin 即原网址 。tomcat2检测到$http_origin 中的变量 即 原网址是否是本服务,如果不是,则拒绝该访问。

在这里插入图片描述

2.如何跨域

常见的跨域方案:
jsonp、 document.domain + iframe 跨域

Cors解决方案(最优雅)
添加header头: Access-Control-Allow-Origin ,表明允许网站执行

1.CORS 介绍

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。
它允许浏览器向跨源服务器,发出XMLHttpRequest请求,
从而克服AJAX只能同源使用的限制。

简单请求:
浏览器在跨源AJAX请求的头信息之中,自动在添加一个Origin字段(本次请求来自哪个源 )。
服务器根据这个值,在许可范围内,则在头信息包含 Access-Control-Allow-Origin 。

upstream nginx {
   
		ip_hash;
        server 172.17.0.4:8081 weight=2;
		server 172.17.0.5:8081 weight=1;
         }

server {
   
        listen       80;
        server_name  www.enjoy.com;

	#匹配正则
	if ( $http_origin ~ http://(.*).enjoy.com){
   
                 set $allow_url $http_origin;
        }
  	 #是否允许请求带有验证信息
    	 add_header Access-Control-Allow-Credentials true;
    	 #允许跨域访问的域名,可以是一个域的列表,也可以是通配符*
    	 add_header Access-Control-Allow-Origin  $allow_url;
    	 #允许脚本访问的返回头
    	 add_header Access-Control-Allow-Headers 'x-requested-with,content-type,Cache-Control,Pragma,Date,x-timestamp';
    	 #允许使用的请求方法,以逗号隔开
    	 add_header Access-Control-Allow-Methods 'POST,GET,OPTIONS,PUT,DELETE';
    	 #允许自定义的头部,以逗号隔开,大小写不敏感
    	 add_header Access-Control-Expose-Headers 'WWW-Authenticate,Server-Authorization';
    	 #P3P支持跨域cookie操作
    	 add_header P3P 'policyref="/w3c/p3p.xml", CP="NOI DSP PSAa OUR BUS IND ONL UNI COM NAV INT LOC"';
	add_header test  1;

	 if ($request_method = 'OPTIONS') {
   
             return 204;
         }

        location / {
   
            root   html/static/;
            index  index.html index.htm;
        }

	location /rout {
   
		rewrite ^/rout
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值