最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 前后端分离解决跨域常用的方法

    正文概述 掘金(recat)   2021-04-28   602

    1. 跨域

    1.1 基本概念

    • 跨域请求:在浏览器上当前访问的网站向另一个网站发送请求获取数据的过程就是跨域请求。

    • 跨域是浏览器的同源策略决定的,是一个重要的浏览器安全策略,可以使用 CORS 配置解除这个限制。

    1.2 example

    下表给出了与 URL store.company.com/dir/page.ht… 的源进行对比的示例:

    URL结果原因
    store.company.com/dir2/other.…同源只有路径不同store.company.com/dir/inner/a…同源只有路径不同store.company.com/secure.html失败协议不同store.company.com:81/dir/etc.htm…失败端口不同 ( http:// 默认端口是80)news.company.com/dir/other.h…失败主机不同

    2.代理

    2.1正向代理

    前后端分离解决跨域常用的方法

    2.2反向代理

    代理客户端的请求,并按照一定的规则,把请求分发给其它服务器 前后端分离解决跨域常用的方法

    3.nginx

    3.1 基本概念

    • Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。占有内存少,并发能力强。

    3.2 example

    页面:example.com
    接口:api.example.com
    在页面上请求接口不做任何配置的话,浏览器会提示跨域,因为违反了浏览器的同源策略。

    3.3 通过反向代理来解决跨域

    可以通过路径来区分:
    example.com # 请求页面
    example.com/api/ # 请求接口

        # config
        server {
          listen 80;
          server_name example.com;
          location / {
            root   /;
            index  index.html index.htm;
          }
          location /api/ {
            proxy_pass http://api.example.com/api;
          }
        }
    

    把请求 example.com/api/ 代理到 api.example.com
    这样资源就算在同一域名下,不存在夸域的问题了。

    3.4 通过配置header来解决跨域

    • 主要是设置Access-Control-Allow-等相关属性,来让浏览器知道,网站允许哪些域名、哪种请求方式的请求。
    • 浏览器遇到跨域请求是会先发送OPTIONS请求预检
    • 这种设置header的方式,请求然会是跨域,但是因为服务端的允许,所以跨域请求是通畅的。
    server {
      listen       80;
      server_name  api.example.com;
      
    	add_header 'Access-Control-Allow-Origin' ‘http://example.com’;   # 允许的origin, 可以为*,带cookie的请求不支持*
    	add_header 'Access-Control-Allow-Credentials' 'true';    # 为 true 可带上 cookie
    	add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';  # 允许请求方法
    	add_header 'Access-Control-Allow-Headers' '*';  # 可以具体设置
    	add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
    	
            if ($request_method = 'OPTIONS') {
                # OPTIONS 请求的有效期,在有效期内不用发出另一条预检请求
                add_header 'Access-Control-Max-Age' 1728000;   
                add_header 'Content-Type' 'text/plain; charset=utf-8';
                add_header 'Content-Length' 0;
                return 204;
    	}
      
    	location / {
    	    root   /;
                index  index.html index.htm;
    	}
    }
    
    

    起源地下载网 » 前后端分离解决跨域常用的方法

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元