javascript - @CrossOrigin 不适用于 POST 方法
问题描述
你好我正在开发一个网络应用程序。后端使用 Spring 运行,前端使用 React。如果我使用 POST Http 方法,我会遇到 CrossOrigin 的问题。这是我的js代码:
const LOGIN_URL = "http://localhost:8080/auth/login";
login(username, password) {
return axios.post(LOGIN_URL, {
username,
password,
});
}
在这里我收到一个错误:
- Access-Control-Allow-Origin 不允许来源 http://localhost:3000。
- 由于访问控制检查,XMLHttpRequest 无法加载 http://localhost:8080/auth/login。
- 加载资源失败:Access-Control-Allow-Origin 不允许 Origin http://localhost:3000。
Java Spring 示例代码:
@CrossOrigin(origins = "*")
@RestController
@RequestMapping("/auth")
public class AuthController {
...
@PostMapping("/login")
public ResponseEntity<?> signInUser(@RequestBody LoginBody loginBody){
.....
return ResponseEntity.ok("OK");
}
但是如果我使用 GET 请求,像这样:
JS代码:
hello() {
return axios.get(HELLO_URL);}
Java 代码:
@CrossOrigin
@RestController
@RequestMapping("public")
public class HelloWorld {
@GetMapping("/hello")
public String helloWorld() {return "Hello ";}
}
我没有错误。一切正常
你知道如何解决这个问题吗?
解决方案
在 @PostMapping("/login") 注释之上添加 @CrossOrigin 而不是在类级别使用。
推荐阅读
- python - 如何使用欧几里得距离计算两点之间的距离?
- javascript - 油脂猴改变 javascript 测试
- node.js - 如何使用 foreach 使用 Ejs 视图显示特定文件夹中的所有图像
- reactjs - 反应状态在返回内为空
- java - Neo4j Java 注册 gds.alpha.shortestPath.stream 到嵌入式 neo4j
- database - sqflite query() 不起作用:“类型'QueryRow'不是'Map'类型的子类型
'" - ios - 在 iOS swfit 中将 Double 类型变量重构/替换为 Decimal / NSDecimalNumber
- javascript - 如何使用java脚本从当前url获取多个url参数
- php - 雄辩的关系查询返回空值
- sql - 在 Postgres 中创建一个触发器函数,它不允许你有两个具有相同 id 的条目