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
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    漫思
  • 相关阅读:
    [NLP] 语义网络与知识图谱入门(二)
    [NLP] 语义网络与知识图谱入门(一)
    [论文理解] LFFD: A Light and Fast Face Detector for Edge Devices
    [学习笔记] 匈牙利匹配
    [NLP] nlp-lstm-cos -> sin
    [ros] ros入门记录
    [推荐系统] 两种协同过滤
    [NN] Guided Backpropgation 可视化
    [torch] pytorch hook学习
    python高级编程和算法
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/15455746.html
Copyright © 2011-2022 走看看