标签: nelmiocorsbundle

Chrome 不在 CrossSide 上发送原始标头

我正在开发一个应用程序,使用最新的 Angular 作为前端,在服务器上使用 Symfony + Apache。应用程序和服务器位于不同的域中,但我的服务器通过发送所需的 CORS 标头(由 NelmioCors Bundle 创建)来允许它。但是Chrome没有发送Origin标头,这会触发Bundle发送标头。

STRG不知怎的,当我用+ SHIFT+调用页面时,R它加载没有问题。

设置Vary: Origin没有帮助。

为什么 Chrome 缓存请求时没有允许 Origin 标头/首先不发送 Origin?

google-chrome cors angular angular5 nelmiocorsbundle

5
推荐指数
1
解决办法
4834
查看次数

在 symfony 4 上允许 CORS

我最近需要允许 CORS 并在寻找解决方案时找到了nelmio/NelmioCorsBundle.

对于乞讨,我可以允许来自任何来源的请求,所以这是我的app/config/config.yml

nelmio_cors:
    defaults:
        allow_credentials: false
        allow_origin: ['*']
        allow_headers: ['*']
        allow_methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS']
        max_age: 3600
        origin_regex: false 
Run Code Online (Sandbox Code Playgroud)

它仅适用于 GET 请求,任何 POST 请求都会返回:

请求的资源上不存在“Access-Control-Allow-Origin”标头。

我不一定需要使用这个包,在乞讨时我试图取消注释TRUSTED_HOSTS并将它设置为我的域dotenv文件,但它没有用。此外,我没有在文档中找到有关此 TRUSTED_HOSTS 的任何帮助。

因此,任何有关此捆绑包或 symfony 上 CORS 的任何其他解决方案的任何帮助,我都会很高兴。


按照我的要求,我正在更新我当前的 nelmiocors 配置:

# app/config/config.yml

# Nelmio CORS Configuration
nelmio_cors:
    defaults:
        origin_regex: true
        allow_origin: ['%env(CORS_ALLOW_ORIGIN)%']
        allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
        allow_headers: ['Content-Type', 'Authorization']
        expose_headers: ['Link']
        max_age: 3600
    paths:
        '^/':
          origin_regex: true
          allow_origin: ['%env(CORS_ALLOW_ORIGIN)%']
          # …
Run Code Online (Sandbox Code Playgroud)

php symfony symfony4 nelmiocorsbundle

3
推荐指数
1
解决办法
2万
查看次数