java - React 应用程序不向 Java 服务器发送标头
问题描述
我在互联网上搜索了很多,但我没有找到任何对我的问题有帮助的东西。我有一个 java 服务器和一个反应客户端。我的服务器使用 jwt 进行身份验证并向我的客户端返回一个令牌。
当我尝试使用 post 方法发送数据时,我的客户端不发送标头,因此我的服务器返回“未经授权”消息。我尝试从 Postman 和 ARC(Advanced Rest Client)发送相同的请求并且它有效。
这是我的客户代码:
fetch(url, {
method: 'POST',
crossDomain: true,
mode: 'no-cors',
body: JSON.stringify(data),
headers: {
'Authorization': 'Bearer ' + 'token generated from fiddler after running auth',
'Accept': 'application/json',
'Content-Type': 'application/json'
}
})
.then(response => response.json())
.then(responseJson => {
console.log(responseJson);
});
我也尝试过使用 axios,我也遇到了同样的问题。此外,我的服务器在所有控制器类中都有 @CrossOrigin(origins = {"*"}) 注释。
我不知道我的问题出在客户端还是服务器上,以及为什么要使用 Postman 和 ARC。
解决方案
您正在使用mode: no-cors
它基本上去除了所有不是简单标题的标题:https ://developer.mozilla.org/en-US/docs/Web/API/Request/mode
您应该启用 CORS 并在服务器上允许您的域。
推荐阅读
- javascript - 未捕获的类型错误:无法读取未定义的属性“字符串”
- python - 无法在 conda 环境中访问激活、停用或 conda
- javascript - .flat() is not a function, what's wrong?
- node.js - 在 Nodejs 服务器中实现 wss(安全 WebSocket)
- typescript - TransformationResult.transformed SourceFile and ts.Printer
- groovy - 如何访问脚本断言中的动态值;哪些设置在测试用例级别?
- sql - 如何比较postgresql中的ctid?
- java - 将代理和自定义处理程序添加到同一个 Wildfly 部署
- amazon-web-services - 如何有效管理两个ec2实例监听的队列事务
- python - 熊猫日期时间重采样计数非零