我有一个网关,里面有一些用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);
}
);
我不是在摆脱这个问题,请让我知道我应该做些什么来解决这个问题。
1条答案
按热度按时间j5fpnvbx1#
经过大量的挣扎,我能够摆脱这个问题。一般来说,在REST控制器类上添加
@CrossOrigin
注解,请求方法应该可以解决这个问题。但是如果添加注解不能解决问题,那么它是从您的浏览器生成的。在这种情况下,您可以通过运行浏览器禁用网络安全来解决问题。
对于Windows,您可以按照以下步骤运行goggle chrome禁用Web安全
1.打开运行(按窗口键+ R)
1.编写以下命令
chrome.exe--用户数据目录=“C://Chrome开发会话”--禁用Web安全性
1.按Enter键