在 symfony 4 上允许 CORS
Allow CORS on symfony 4
我最近需要允许 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
它仅适用于 GET 请求,任何 POST 请求 returns:
No 'Access-Control-Allow-Origin' header is present on the requested
resource.
我不一定需要使用这个包,在开始时我试图取消注释 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)%']
# allow_origin: ['^http://localhost:[0-9]+']
allow_headers: ['*']
allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
# allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
max_age: 3600
# hosts: ['^api\.']
不知道到底哪里出了问题,但作为其中一条评论的帮助(帮助的人可能已经删除了自己的评论)。
我最终对 Nelmio CORS 进行了以下配置:
nelmio_cors:
defaults:
origin_regex: true
allow_origin: ['*']
allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
allow_headers: ['Content-Type', 'Authorization']
expose_headers: ['Link']
max_age: 3600
paths:
'^/': ~
然后从 cli 中手动清除缓存,然后它就起作用了。
我猜我做错了什么:当我第一次配置 Nelmio CORS 时,我没有清除缓存,因此它没有工作。之后我尝试了一些其他的配置组合,即使我清除了缓存也没有用。这让我觉得如果我没有忘记清除缓存,代码应该从一开始就可以工作,在此之后我使用了无效的配置并且显然清除缓存这是行不通的。总而言之,这是一个初学者的错误。
示例:
nelmio_cors:
defaults:
origin_regex: true
allow_origin: ['*']
allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
allow_headers: ['Accept','Authorization','Cache-Control','Content-Type','DNT','If-Modified-Since','Keep-Alive','Origin','User-Agent','X-Requested-With']
expose_headers: ['Authorization']
max_age: 3600
paths:
'^/': ~
我最近需要允许 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
它仅适用于 GET 请求,任何 POST 请求 returns:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
我不一定需要使用这个包,在开始时我试图取消注释 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)%']
# allow_origin: ['^http://localhost:[0-9]+']
allow_headers: ['*']
allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
# allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
max_age: 3600
# hosts: ['^api\.']
不知道到底哪里出了问题,但作为其中一条评论的帮助(帮助的人可能已经删除了自己的评论)。
我最终对 Nelmio CORS 进行了以下配置:
nelmio_cors:
defaults:
origin_regex: true
allow_origin: ['*']
allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
allow_headers: ['Content-Type', 'Authorization']
expose_headers: ['Link']
max_age: 3600
paths:
'^/': ~
然后从 cli 中手动清除缓存,然后它就起作用了。
我猜我做错了什么:当我第一次配置 Nelmio CORS 时,我没有清除缓存,因此它没有工作。之后我尝试了一些其他的配置组合,即使我清除了缓存也没有用。这让我觉得如果我没有忘记清除缓存,代码应该从一开始就可以工作,在此之后我使用了无效的配置并且显然清除缓存这是行不通的。总而言之,这是一个初学者的错误。
示例:
nelmio_cors:
defaults:
origin_regex: true
allow_origin: ['*']
allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
allow_headers: ['Accept','Authorization','Cache-Control','Content-Type','DNT','If-Modified-Since','Keep-Alive','Origin','User-Agent','X-Requested-With']
expose_headers: ['Authorization']
max_age: 3600
paths:
'^/': ~