• nginx配置允许指定域名下所有二级域名跨域请求


    核心原理是根据请求域名匹配是否是某域名的二级域名判断是否添加允许跨越头。

    #畅游www
        server {
            listen 8015;
            server_name test-tl.changyou.com;
            root E:/work/site/www ;
            location ~* .(eot|ttf|woff|svg|otf)$ {
                set $flag '0';
                if ( $http_origin ~* ^(http?://.*.changyou.com:8014$) ){
                     set $flag '1';
                }
                if ( $http_origin ~* ^(http?://.*.cy.com:8014$) ){
                     set $flag '1';
                }
                if ($flag = '1') {
                     add_header 'Access-Control-Allow-Origin' $http_origin;
                     add_header 'Access-Control-Allow-Credentials' 'true';
                     add_header 'Access-Control-Allow-Methods' 'GET,POST';
                     
                }
            }
        } 

    匹配文件类型: eot|ttf|woff|svg|otf 

    为这几种文件类型设置跨域访问

    $http_origin 为nginx全局变量,即域名
    $http_origin ~* ^(http?://.*.changyou.com:8014$)

    匹配所有changyou.com:8014端口下面的二级域名

    由于nginx无法使用or语法,所以判断 匹配所有cy.com:8014端口下面的二级域名

    用变量赋值的方法实现了

    set $flag '0';
                if ( $http_origin ~* ^(http?://.*.changyou.com:8014$) ){
                     set $flag '1';
                }
                if ( $http_origin ~* ^(http?://.*.cy.com:8014$) ){
                     set $flag '1';
                }

    如果默认是80端口,就把:8014去掉就行。

    其实核心代码就是:

                    add_header 'Access-Control-Allow-Origin' $http_origin;
                     add_header 'Access-Control-Allow-Methods' 'GET,POST';            

    (1)Access-Control-Allow-Origin

    该字段是必须的。它的值要么是请求时Origin字段的值,要么是一个*,表示接受任意域名的请求。

    (2)Access-Control-Request-Method

    该字段是必须的,用来列出浏览器的CORS请求会用到哪些HTTP方法

    (3)Access-Control-Allow-Credentials

    该字段可选。它的值是一个布尔值,表示是否允许发送Cookie。默认情况下,Cookie不包括在CORS请求之中。设为true,即表示服务器明确许可,Cookie可以包含在请求中,一起发给服务器。这个值也只能设为true,如果服务器不要浏览器发送Cookie,删除该字段即可。

  • 相关阅读:
    通过system调用Am命令执行动作
    windows中如何在命令行启动启动程序
    UICC 实现框架和数据读写
    软件设计方法(转载)
    好诗欣赏——邀请 The Invitation
    leaflet使用turfjs插件,基于格点数据绘制等值线效果
    深信服防火墙做端口映射
    关于本博客的一些声明
    sqlserver – SQL Server – 包含多个字段的IN子句
    JavaScript Array join() 方法
  • 原文地址:https://www.cnblogs.com/zhidong123/p/7846466.html
Copyright © 2020-2023  润新知