是否可以通过环境变量指定@CrossOrigin Annotation的来源?我想这样做,以便我可以使用相同的代码库进行uat / staging / production.我希望我的uat / staging环境可以通过localhost进行测试,但我的生产环境只接受来自一个特定端点的请求.
例如,这是我们用于新API的跨源注释用户;
@CrossOrigin(origins = {"http://localhost:9000", "http://example.com"})
这很好用.在我的本地计算机上进行测试,只有在端口9000上运行的Web服务器才能访问我的API.然后我尝试在我的本地Windows机器上设置我的环境变量
ALLOWED_ORIGINS = http://localhost:9000,http://example.com
然后我也改变了注释
@CrossOrigin(origins = "#{'${allowed.origins}'.split(',')}")
现在请求因CORS而被阻止.
作为后续问题.我可以将端口设置为通配符吗?这样任何localhost网络服务器都可以访问API?
UPDATE
并为allowedOrigins()设置env变量
@Value("#{'${allowed.origins}'.split(',')}")
private List allowedOrigins;
但是对于我的生活,我似乎无法通过任何形式的通配符/模式匹配工作.我已经尝试了以下两个作为环境变量;
http://localhost:*
http:\/\/localhost:[0-9]+
我可能不得不提出这个问题作为一个单独的问题.