在Java中将Spring属性与CrossOrigin注解一起使用,或在Spring-Config XML中使用

zd287kbt  于 2023-01-24  发布在  Java
关注(0)|答案(3)|浏览(154)

我在Spring中使用了CrossOrigin注解。现在我想将一个属性作为值注入到注解中。我没有让它工作。
现在我访问我的属性如下:

@Value("${settings.cors_origin}")
String cors_origin;

我想将此特性注入到CrossOrigin注记:

....
@CrossOrigin(origins = cors_origin)
@RequestMapping(value="/request", method= RequestMethod.GET, produces = "application/json")
public ResponseEntity<?> getMethod()
{
...

我已经试过了:

@CrossOrigin(origins = "${settings.cors_origin}")
    • 编辑1:**

现在我尝试在我的spring配置中全局设置CORS头:

<context:property-placeholder location="classpath*:*appsettings.properties"/>

 <mvc:cors>
 <mvc:mapping path="/api/**"
             allowed-origins="${test}"
             allowed-methods="GET, PUT, OPTIONS, POST"/>
</mvc:cors>

此设置也不起作用!允许的原点与属性文件中指定的原点不相同。我认为它不会将变量转换为值?当我在Spring配置allowed-origins中手动设置IP地址时,它起作用。设置有问题...

  • 应用程序设置.属性:*
test=http://192.168.1.200
    • 编辑2:**
    • S O L V E D**

经过一段时间的故障排除,我现在解决了这个问题:-)现在我再次使用注解@CrossOrigin。我必须将***RequestMethod Options***添加到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()
  {

谢谢你的帮忙!

nnt7mjpx

nnt7mjpx1#

你需要给@CrossOrigin注解的origins参数传递一个字符串数组,这是用大括号完成的:

@CrossOrigin(origins = {"${settings.cors_origin}"})

然后在Spring中,源代码/main/resources/application.properties:

settings.cors_origin:http://localhost:4200

注意,不要在application.properties中的键值对右边包含注解或多余的空格,值后面多余的空格可能会导致键值对读取错误。

k97glaaz

k97glaaz2#

可以尝试直接在origins参数中访问该属性

@CrossOrigin(origins = @Value("${settings.cors_origin}"))
bsxbgnwa

bsxbgnwa3#

它解决了问题

首先,您需要设置www.example.com文件中的属性application.properties,例如

settings.cors_origin:http://localhost:4200

其次..从控制器文件访问属性,如

//@CrossOrigin(origins = "http://localhost:4200")
@CrossOrigin(origins = {"${settings.cors_origin}"})
@RestController

相关问题