Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails 3在application.yml中为多个映射配置CORS_Grails_Cors - Fatal编程技术网

Grails 3在application.yml中为多个映射配置CORS

Grails 3在application.yml中为多个映射配置CORS,grails,cors,Grails,Cors,我在这里尝试过遵循官方文档指南,但奇怪的是,我发现只有第一个映射才会被应用 他们的例子是: grails: cors: enabled: true mappings: /api/**: inherit 我的假设是可行的,但没有(只有第一个映射得到应用): 我肯定错过了一些非常简单的东西,因为我惊讶地发现没有关于这样的多个映射的文档或问题。对此有什么想法吗?是的,我也差点被杀了。我们在BeAPI Grails插件(我维护)中解决了这

我在这里尝试过遵循官方文档指南,但奇怪的是,我发现只有第一个映射才会被应用

他们的例子是:

grails:
    cors:
        enabled: true
        mappings:
            /api/**: inherit
我的假设是可行的,但没有(只有第一个映射得到应用):


我肯定错过了一些非常简单的东西,因为我惊讶地发现没有关于这样的多个映射的文档或问题。对此有什么想法吗?

是的,我也差点被杀了。我们在BeAPI Grails插件(我维护)中解决了这个问题,将映射添加到BeAPI_api.yml配置文件:

corsInterceptor:
    includeEnvironments: ['development','test','production']
    excludeEnvironments: []
    networkGroups:
        open: ['http://localhost','http://localhost:8080','http://127.0.0.1','http://test.nosegrind.net','http://test.nosegrind.net:8080']
        public: ['http://localhost','http://localhost:8080','http://127.0.0.1','http://test.nosegrind.net','http://test.nosegrind.net:8080']
        private: ['http://localhost','http://localhost:8080','http://127.0.0.1','http://test.nosegrind.net','http://test.nosegrind.net:8080']
networkGroups: ['open','public','private']
networkRoles:
    open: ['ROLE_ADMIN','ROLE_ANONYMOUS','ROLE_USER']
    public: ['ROLE_ADMIN','ROLE_USER']
    private: ['ROLE_ADMIN']
检查每个请求以查看它所属的“networkGroup”(在同一配置文件中声明):

这允许在执行CORS检查时在前端进行组/角色检查以及FQDN/IP检查


因此,您所要做的就是将FQDN/IP添加到适当的“corsInterceptor.networkGroup”

这可能看起来很复杂,但它所做的是允许“管理员”等“角色组”关闭IP/FQDN可以调用后端API的内容;这可以使某些API端点严格位于内部或位于封闭的VPN上,等等,以满足更大网络的需求。
networkGroups: ['open','public','private']
networkRoles:
    open: ['ROLE_ADMIN','ROLE_ANONYMOUS','ROLE_USER']
    public: ['ROLE_ADMIN','ROLE_USER']
    private: ['ROLE_ADMIN']