javascript - 使用axios创建post请求后,header值在服务器端返回null

标签 javascript java spring-boot servlets axios

我正在 Vue.js 中使用 axios 库开发一个项目。我将 token 信息添加到使用 aixos 创建的请求的 header 参数中。但是当我尝试在 Web 服务中读取此 header 时,授权信息返回 null。

客户端

 let config = {
      headers : {
        'Content-Type': 'application/json',
        'Authorization': token.toString(),
      }
    }
    console.log(token)
    axios.post(baseUrl.base+'api/v1/post', {post},{
      headers : {
        'Authorization' : token.toString(),
        'Content-Type': 'application/json',
      }
    }).then(response => {
        console.log(response)
    })

服务器端 JWTFilter.java

protected void doFilterInternal(HttpServletRequest request,
                                    HttpServletResponse response,
                                    FilterChain filterChain) throws ServletException, IOException {
        try {
            if (isProtectedUrl(request)) {
                String token = request.getHeader("Authorization"); // expected value = Bearer eyc... but return null
                JwtUtil.validateToken(token);
            }

        } catch (Exception e) {
            response.sendError(HttpServletResponse.SC_UNAUTHORIZED, e.getMessage());
            return;
        }
        filterChain.doFilter(request, response);
    }

CorsConfig.java

@Bean
    CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedOrigins(Arrays.asList("*"));
        configuration.setAllowedMethods(Arrays.asList("GET","POST"));
        configuration.setAllowCredentials(true);
        configuration.addAllowedOrigin("*");
        configuration.addAllowedHeader("*");
        configuration.addAllowedMethod("*");
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }
Access to XMLHttpRequest at 'localhost:8081/api/v1/post' from origin 'localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status

最佳答案

我按如下方式解决了这个问题:

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.httpBasic().disable()
                .cors().configurationSource(request -> new CorsConfiguration().applyPermitDefaultValues())
                .and()
                .csrf().disable();
    }

关于javascript - 使用axios创建post请求后,header值在服务器端返回null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62003998/

相关文章:

java - 从 PJSIP 示例 (PJSUA2) 中调用 LogWriter 的位置打印

java - 使用 WS4J 的句子相似度

java - 如何在spring sts中获取spring boot web项目的默认结构?

spring-boot - 升级到 Spring Boot 2 后,如何向 prometheus 公开缓存指标?

javascript - 如何裁剪超过元素长度的字符串?

javascript - Backbone.js 集合和 Tastypie 过滤器

javascript - 为什么我的音频没有倒带?

java - 运行 hibernate 应用程序时出现异常

javascript - 我无法显示对象 Promise (react) 的内容

spring - 如何在 spring 中使用 2 个或多个数据库?