【问题标题】:Symfony 3 Nelmio cors set allow origin properlySymfony 3 Nelmio cors 设置允许正确起源
【发布时间】:2018-11-08 21:56:00
【问题描述】:

我想限制访问,只允许某些地址访问我的 RESTful API,我使用 symfony 和 nelmio cors 包。

这是我在文档中的配置:

nelmio_cors:
    defaults:
        allow_credentials: false
        allow_origin: []
        allow_headers: []
        allow_methods: []
        expose_headers: []
        max_age: 0
        hosts: []
        origin_regex: false
        forced_allow_origin_value: ~
    paths:
        '^/api':
            allow_origin: ['192.0.74.122']
            allow_headers: ['X-Custom-Auth']
            allow_methods: ['POST', 'PUT', 'DELETE']
            max_age: 3600
        '^/':
            origin_regex: true
            allow_origin: ['^http://localhost:[0-9]+']
            allow_headers: ['X-Custom-Auth']
            allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
            max_age: 3600
            hosts: ['^api\.']

我想设置192.0.74.122只允许访问^/api^/api/*,但是当我在浏览器、邮递员和jquery ajax调用中测试时,它可以来自localhost或127.0.0.1

请帮助我如何阻止允许地址之外的其他地址?

【问题讨论】:

    标签: php jquery ajax symfony nelmiocorsbundle


    【解决方案1】:

    Nelmio cors bundle 是关于设置 CORS 标头,而不是关于阻止或限制对特定路由的访问。

    为此在您的security.yml 中使用access_control 条目。 示例(未测试):

    # config/security.yml
    security:
        # ...
        access_control:
            - { path: ^/api, role: IS_AUTHENTICATED_ANONYMOUSLY, ip: 192.0.74.122 }
            - { path: ^/api, role: ROLE_NO_ACCESS }
    

    您可以设置多个 IP 甚至范围。详细解释见official cookbook pagea。

    【讨论】:

      猜你喜欢
      • 2018-09-07
      • 2019-10-27
      • 2019-06-26
      • 2019-08-28
      • 2019-06-29
      • 2019-08-01
      • 2021-04-28
      • 2018-07-28
      • 2015-09-01
      相关资源
      最近更新 更多