java - Spring Boot 和 @CrossOrigin 仅带有 POST 注释

标签 java rest spring-boot cors

我有以下类(class)

@RestController
@RequestMapping("/bets")
@CrossOrigin
public class BetRestController {

    @Autowired
    private BetController betController;

    @ResponseBody
    @RequestMapping(method=RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
    public BetResource betOnGame(@RequestBody @Valid BetResource betResource) {
        return BetTranslator.from(betController.betOnGame(BetTranslator.from(betResource)));
    }

    @ResponseBody
    @RequestMapping(method = RequestMethod.GET)
    public List<BetResource> getAllBets() {
        return betController.getAllBets().stream().map(BetTranslator::from).collect(Collectors.toList());
    }
}

问题是,当我尝试访问 POST 方法时,我得到:

XMLHttpRequest 无法加载 http://localhost:8080/bets 。产地 http://localhost:3000 Access-Control-Allow-Origin 不允许。

但是 GET 方法有效。

我的配置有什么问题,或者 @CrossOrigin 注释处理中可能存在错误?!

最佳答案

如果我正确理解您的问题,则可以在一种特定方法上指定 CORS 来源。

Sprint Boot 文档:https://spring.io/guides/gs/rest-service-cors/

Enabling CORS

Controller method CORS configuration

So that the RESTful web service will include CORS access control headers in its response, you just have to add a @CrossOrigin annotation to the handler method:

这是来自 Spring boot 网站的示例:

@CrossOrigin(origins = "http://localhost:9000")
@RequestMapping("/greeting")
public @ResponseBody Greeting greeting(@RequestParam(required=false, defaultValue="World") String name) {
    System.out.println("==== in greeting ====");
    return new Greeting(counter.incrementAndGet(), String.format(template, name));
 }

关于java - Spring Boot 和 @CrossOrigin 仅带有 POST 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37861146/

相关文章:

java - 为什么当我按类(而不是接口(interface))包装由JDK动态代理包装的查找bean时,为什么没有遇到任何异常?

java - 从另一个方法运行方法 - Java

java - 为什么当类存在时会抛出NoClassDefFoundError?

java - 如何在 Spring 3 中上传图像并将 JSON 发布到 RESTful Web 服务

json - 为图书管理系统设计一个Restful API(JSON Data、Spring MVC、Restful API)

spring-boot - Redis 在使用 Spring Boot 时将对象设置为空 json "{}"

Java RX,为什么这一行被调用两次而这两行从未被调用

java - Collection 内容从未在 Intellij IDEA 中更新警告

node.js - 如何在 node.js 中设计持久化服务

spring-boot - 使用 Mockito 模拟带有 @Transactional 方法的类