美文网首页
前后端分离,跨域,nginx中忽略OPTIONS请求配置跨域

前后端分离,跨域,nginx中忽略OPTIONS请求配置跨域

作者: 没心没肺最开心 | 来源:发表于2019-11-27 14:12 被阅读0次
    现在很多项目都是喜欢前后端分离,网上看了很多感觉心累,写的七七八八,多次尝试后把自己用的展示如下:
    
              if ($http_origin ~* "^http://a.domain.com$") {
                      set $cors_origin $http_origin;
              }
              if ($http_origin ~* "^http://b.domain.com$") {
                      set $cors_origin $http_origin;
              }
              if ($request_method = 'OPTIONS') {
            add_header Access-Control-Allow-Origin $http_origin;
            add_header Access-Control-Allow-Headers X-Requested-With,aheader, bheader, cheader;
            add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
            add_header Access-Control-Allow-Credentials true;
            add_header Access-Control-Max-Age 86400;
              return 204;
    
            }
            add_header Access-Control-Allow-Origin $http_origin;
            add_header Access-Control-Allow-Headers X-Requested-With,aheader, bheader, cheader;
            add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
            add_header Access-Control-Allow-Credentials true;
            add_header Access-Control-Max-Age 86400;
    

    注意:

    • nginx 不支持循环if
    • add_header xxxxx xxxx 内容请放入location内,直接在service下放入if区域中会报错
    • b.domain.com a.domain.com 为你自己要开通跨域权限的域名
    • aheader, bheader, cheader 这些表示独立需要传递的header头
    • 网上 大部分只在 ($request_method = 'OPTIONS') 区域内配置了跨域,这可能会造成浏览器第二次正式请求后拿不到返回体(实测,也不知道什么原因),所以最后正常请求中也加入跨域信息
    • 具体add_header参数 自行百度

    相关文章

      网友评论

          本文标题:前后端分离,跨域,nginx中忽略OPTIONS请求配置跨域

          本文链接:https://www.haomeiwen.com/subject/zdspwctx.html