CORS策略阻止Java Spring API请求使用axios从React调用

8zzbczxx  于 2022-11-05  发布在  iOS
关注(0)|答案(1)|浏览(134)

我有一个网关,里面有一些用Java Sping Boot 开发的API。但是当我从我的react项目中调用API时,抛出了下面的错误。

Access to XMLHttpRequest at 'http://localhost:8081/testgw/hello' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

我已经将@CrossOrigin注解添加到我的rest控制器中,如下所示。

@CrossOrigin(origins= {"*"}, maxAge = 4800, allowCredentials = "false" )
@RestController
public class FTController {

    @GetMapping("/hello")
    public String getHello() {    
        return "Hello World!";
    }
}

我从我的react项目中调用API,如下所示

var url = "http://localhost:8081/testgw/hello";
axios.get(url, {
    headers: {
        'Authorization' : 'Basic [AuthKey]',
        'Access-Control-Allow-Origin':'*',
        'Access-Control-Allow-Methods':'GET,POST,OPTIONS,DELETE,PUT'
    }
})
.then(
    function(response) {
        console.log("response --> " + response);
    }).catch(function(error) {
        console.log(error);
    }
);

我不是在摆脱这个问题,请让我知道我应该做些什么来解决这个问题。

j5fpnvbx

j5fpnvbx1#

经过大量的挣扎,我能够摆脱这个问题。一般来说,在REST控制器类上添加@CrossOrigin注解,请求方法应该可以解决这个问题。
但是如果添加注解不能解决问题,那么它是从您的浏览器生成的。在这种情况下,您可以通过运行浏览器禁用网络安全来解决问题。
对于Windows,您可以按照以下步骤运行goggle chrome禁用Web安全
1.打开运行(按窗口键+ R
1.编写以下命令

chrome.exe--用户数据目录=“C://Chrome开发会话”--禁用Web安全性

1.按Enter键

相关问题