symfony 允许从每个子域NelmioCorsBundle访问

wljmcqd8  于 2023-02-23  发布在  其他
关注(0)|答案(1)|浏览(131)

在我的项目中,每个客户端都有一个子域,我想在nelmio_cors.yaml文件规则中设置允许每个子域访问我的/api
在我的代码中我有:
文件:/config/packages/prod/nelmio_cors.yaml

nelmio_cors:
    defaults:
        allow_credentials: false
        allow_origin: ['https://default.com']
        allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
        allow_headers: ['Content-Type', 'Authorization', 'Access-Control-Allow-Origin']
        max_age: 3600
    paths:
        '^/api/':
            allow_origin: ['https://default.com','*.example.com', '^(https?://.+\.example\.com(?::\d{1,5})?)$']
            allow_headers: ['Accept', 'X-Custom-Auth', 'Content-Type', 'Authorization', 'cache-control', 'x-requested-with', 'Access-Control-Allow-Origin']
            allow_methods: ['POST', 'GET', 'PUT', 'DELETE', 'PATCH', 'OPTIONS']
            allow_credentials: true
            max_age: 3600

所以,我尝试了*.example.com^(https?://.+\.example\.com(?::\d{1,5})?)$的例子,但是不起作用,如果我把*它的工作,但是我允许从任何地方访问.

q43xntqr

q43xntqr1#

不支持通配符,但支持origin_regex选项。此配置对我有效,并允许www.example.com的所有子域mydomain.com:

nelmio_cors:
defaults:
    origin_regex: true
    allow_origin: ['^https://(.+.)?mydomain.com']
    allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
    allow_headers: ['Content-Type', 'Authorization']
    expose_headers: ['Link']
    max_age: 3600
paths:
    '^/': null

相关问题