zoukankan      html  css  js  c++  java
  • AccessControlAllowOrigin 跨域设置多域名

    在HTML5中有一种新的跨域方式,即设置“Access-Control-Allow-Origin”可以指定允许跨域访问的域名。
    Node.js中可以这样写

    app.all('*', function(req, res, next) {
            res.header("Access-Control-Allow-Origin", 'https://www.google.com');
            res.header('Access-Control-Allow-Methods', 'POST, GET');
            res.header('Access-Control-Allow-Headers', 'X-Requested-With');
            res.header('Access-Control-Allow-Headers', 'Content-Type');
        next();
    });
    

    但在实际使用中,可能需要设置多个域名。
    在网上查询资料,有一种写法

    Access-Control-Allow-Origin: https://www.google.com,https://www.baidu.com
    

    改成相应的代码,但是始终提示问题,只允许一个值。

    于是换种方式,查资料发现,许多是先自己判断域名是否是允许的,如果是再设置允许跨域访问。那么代码应该改成如下形式

    app.all('*', function(req, res, next) {
        if( req.headers.origin == 'https://www.google.com' || req.headers.origin == 'https://www.baidu.com' ){
            res.header("Access-Control-Allow-Origin", req.headers.origin);
            res.header('Access-Control-Allow-Methods', 'POST, GET');
            res.header('Access-Control-Allow-Headers', 'X-Requested-With');
            res.header('Access-Control-Allow-Headers', 'Content-Type');
        }
        next();
    });
    

    使用时可以把允许访问的域名写成一个数组,然后JS写一个比较字符串是否在数组内的函数,这样使用就比较方便了。

    其中,Access-Control-Allow-Origin就是我们需要设置的域名,Access-Control-Allow-Methods是允许的请求方式,Access-Control-Allow-Headers跨域允许包含的头。

     
    兼容性


    作者:LnEoi
    链接:https://www.jianshu.com/p/b587dd1b7086
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    漫思
  • 相关阅读:
    如何给女朋友解释什么是分布式和集群?【转】
    彻底理解cookie、session、token 【转】
    API到底是什么? 【汇总,转】
    代理的基本原理【转】
    从未如此简单:10分钟带你逆袭Kafka!【转】
    一口气说出Kafka为啥这么快? 【转】
    kafka官网 http://kafka.apache.org/intro
    网络相关命令配置【汇总 更新中】
    Kafka的四个基础概念学习【转】
    Kafka简介及各个组件介绍 【转】
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/15455746.html
Copyright © 2011-2022 走看看