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
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    漫思
  • 相关阅读:
    图像和流媒体 -- 帧率、分辨率、码流的概念和关系(转)
    Linux设备驱动(转)
    STM32开发 -- 4G模块开发详解(转)
    Linux下EC20实现ppp拨号(转)
    使用机智云APP控制战舰V3 (转)
    USB Host读取U盘成功
    FreeModbus在STM32上移植(转)
    处理分页操作
    HBase参数配置及说明(转)
    学习JNDI
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/15455746.html
Copyright © 2011-2022 走看看