Symfony FosRest和NelmioCors一张通配符' *'不能用于“访问控制 - 允许 - 来源”#39;

时间:2016-02-10 12:25:00

标签: php symfony fosrestbundle nelmiocorsbundle

我使用FOSRestBundle和Nelmio Cors Bundle并且有一些端点,/ api / name_end_points,我需要一些服务器有权调用这个端点。 现在我在控制台中有错误

XMLHttpRequest cannot load http://mydomain.com.com/api/endpoint?value=test&value1=test. A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin' header when the credentials flag is true. Origin 'http://localhost:3000' is therefore not allowed access.

这是我的配置:

fos_rest:
param_fetcher_listener: true
body_listener: true
format_listener: true
view:
    view_response_listener: 'force'
    formats:
        xml: true
        json : true
    templating_formats:
        html: true
    force_redirects:
        html: true
    failed_validation: HTTP_BAD_REQUEST
    default_engine: twig
routing_loader:
    default_format: json

nelmio_cors:
defaults:
    allow_credentials: false
    allow_origin: []
    allow_headers: []
    allow_methods: []
    expose_headers: []
    max_age: 0
    hosts: []
    origin_regex: false
paths:
    '^/':
        allow_origin: ['*']
        allow_headers: ['*']
        allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
        max_age: 3600

如果我希望某些服务器的端点访问为true,如何更正配置NelmioCorsBundle?喜欢这个

            allow_origin: ['*aog.jobs*', '*localhost*']

并删除默认值?

1 个答案:

答案 0 :(得分:1)

您需要明确声明允许通过复制Origin请求标头的值来访问资源(如Origin 请求标头中所指定)进入Access-Control-Allow-Origin 回复标题(而不是硬编码*)。

在您这样做之前,请确保您想要全局访问这个(或者对Origin标题的值执行测试以确保它没问题。)