You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot注册API异常排查:HTTPS转HTTP后仍报401

问题排查:Spring Boot注册API与React前端的注册失败问题

我开发了一个Spring Boot注册API,本地运行无报错,但React项目的注册页面无法完成用户注册。用Postman调用时出现HTTP请求解析错误,错误日志如下:

Invalid character found in method name [0x160x030x010x000xf70x010x000x000xf30x030x030x0e0xbca0x910x010xf8.0xc40x840xbecS<0xb5w`"0xf1M0xbe0xa10xcd0xf830xf3y0x8a0x110xc80xf80xca6 ]. HTTP method names must be tokens
at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:419) ~[tomcat-embed-core-9.0.68.jar:9.0.68]
...(省略重复栈信息)

我已确认请求使用POST方法且无特殊字符,将请求协议从HTTPS改为HTTP后,Postman返回401错误,但React端仍无法完成注册。给API添加try-catch块后问题依旧,请求协助排查原因。

初始API代码

@PostMapping("/register")
public ResponseEntity<String> register(@RequestBody RegisterRequest registerRequest){

    if (userRepository.findByEmail(registerRequest.getEmail())!=null){
        return new ResponseEntity<>("Email already exist",HttpStatus.BAD_REQUEST);
    }
   User user = new User();
   user.setEmail(registerRequest.getEmail());
   user.setName(registerRequest.getName());
   user.setLastName(registerRequest.getLastName());
   user.setPassword(passwordEncoder.encode(registerRequest.getPassword()));
   userRepository.save(user);
    authenticationManager.authenticate(
            new UsernamePasswordAuthenticationToken(registerRequest.getEmail(), registerRequest.getPassword())
    );
    return new ResponseEntity<>(jwtUtil.generateToken(
            registerRequest.getEmail(),
            userRepository.findByEmail(registerRequest.getEmail()).getId(),
            registerRequest.getName() +" "+registerRequest.getLastName()
    )
            ,HttpStatus.OK
    );
}

添加try-catch后的代码

@PostMapping("/register")
public ResponseEntity<String> register(@RequestBody RegisterRequest registerRequest) {
    try {
        if (userRepository.findByEmail(registerRequest.getEmail()) != null) {
            return new ResponseEntity<>("Email already exists", HttpStatus.BAD_REQUEST);
        }

        User user = new User();
        user.setEmail(registerRequest.getEmail());
        user.setName(registerRequest.getName());
        user.setLastName(registerRequest.getLastName());
        user.setPassword(passwordEncoder.encode(registerRequest.getPassword()));
        userRepository.save(user);

        // Attempt authentication after user registration
        authenticationManager.authenticate(
            new UsernamePasswordAuthenticationToken(registerRequest.getEmail(), registerRequest.getPassword())
        );

        // Generate JWT token
        String token = jwtUtil.generateToken(
            registerRequest.getEmail(),
            user.getId(),
            registerRequest.getName() + " " + registerRequest.getLastName()
        );

        return new ResponseEntity<>(token, HttpStatus.OK);
    } catch (Exception e) {
        // Log the exception or handle it as needed
        e.printStackTrace(); // You can replace this with your logging mechanism
        return new ResponseEntity<>("Failed to register user", HttpStatus.INTERNAL_SERVER_ERROR);
    }
}

内容的提问来源于stack exchange,提问作者Prabhav Goel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 22:16:30