zoukankan      html  css  js  c++  java
  • 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,删除该字段即可。

  • 相关阅读:
    VS2008中 没有QT的代码智能提示
    QT的一个奇怪问题,设置了Qt::Tool后,点击弹出对话框的确定取消按钮,程序直接退出。
    QT线程初次使用。遇到的问题。
    QMenu,QT的菜单添加
    VS2008 不能创建C++的项目,解决方法
    VS2008工具,两种加入库的方法。 设置程序运行时目录
    得到弹出菜单QMenu的高度
    QT 修改QTableWidget表头
    QT两个字符串转化函数,避免文字乱码。
    改变QlistWidget的行高
  • 原文地址:https://www.cnblogs.com/zhidong123/p/7846466.html
Copyright © 2011-2022 走看看