首页 > 解决方案 > 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。

标签: javareactjsheaderauthorizationtoken

解决方案


您正在使用mode: no-cors它基本上去除了所有不是简单标题的标题:https ://developer.mozilla.org/en-US/docs/Web/API/Request/mode

您应该启用 CORS 并在服务器上允许您的域。


推荐阅读