Han*_*nes 6 java spring annotations spring-mvc spring-security
我在Spring中使用CrossOrigin注释.现在我想将一个Property作为值注入注释.我不接受这个工作.
现在我像这样访问我的财产:
@Value("${settings.cors_origin}")
String cors_origin;
Run Code Online (Sandbox Code Playgroud)
我想将此属性注入CrossOrigin注释:
....
@CrossOrigin(origins = cors_origin)
@RequestMapping(value="/request", method= RequestMethod.GET, produces = "application/json")
public ResponseEntity<?> getMethod()
{
...
Run Code Online (Sandbox Code Playgroud)
我尝试过这样的事情:
@CrossOrigin(origins = "${settings.cors_origin}")
Run Code Online (Sandbox Code Playgroud)
编辑1:
现在我尝试在我的spring配置中全局设置CORS-Header:
<context:property-placeholder location="classpath*:*appsettings.properties"/>
<mvc:cors>
<mvc:mapping path="/api/**"
allowed-origins="${test}"
allowed-methods="GET, PUT, OPTIONS, POST"/>
</mvc:cors>
Run Code Online (Sandbox Code Playgroud)
此设置也无效!允许的原点与属性文件中指定的原点不同.我认为它不会将变量转换为值?当我在spring config allowed-origin中手动设置IP地址时,它正在工作.设置有问题......
appsettings.properties:
test=http://192.168.1.200
Run Code Online (Sandbox Code Playgroud)
编辑2:
解决了
经过一段时间的故障排除后,我现在为我解决了这个问题:-)现在我再次使用注释@CrossOrigin.我不得不将RequestMethod选项添加到Spring RequestMapping:
@RestController
@CrossOrigin(origins = {"${settings.cors_origin}"})
@RequestMapping("/api/v1")
public class MainController {
@RequestMapping(value="/request", method = {RequestMethod.GET, RequestMethod.OPTIONS}, produces = "application/json")
public ResponseEntity<?> getMethod()
{
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
您需要将字符串数组传递给注释的origins参数@CrossOrigin。这是用花括号完成的:
@CrossOrigin(origins = {"${settings.cors_origin}"})
Run Code Online (Sandbox Code Playgroud)
然后在 Spring 中,src/main/resources/application.properties:
settings.cors_origin:http://localhost:4200
Run Code Online (Sandbox Code Playgroud)
请注意,不要在 application.properties 中的键值对右侧包含注释或额外空格。值后面的额外空格可能会导致键值对被错误读取。
小智 0
您可以尝试直接在 origins 参数中访问该属性
@CrossOrigin(origins = @Value("${settings.cors_origin}"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2843 次 |
| 最近记录: |