• 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,删除该字段即可。

  • 相关阅读:
    Java8新特性Stream详细教程
    自定义注解!绝对是程序员装逼的利器!!
    如何处理重复请求/并发请求的
    C#字符处理
    mysql 索引
    mysql事件【定时器】
    JS日期,金钱处理
    Controller中使用@Value无法获取属性值
    druid连接池的配置
    mybatiste报错java.lang.ClassCastException
  • 原文地址:https://www.cnblogs.com/zhidong123/p/7846466.html
Copyright © 2020-2023  润新知