So i have this register api created
@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
);
}
This works fine without any error when i got and run my react project and go to the register page i am not able to register a user.
Also when i hit the same api on postman using
{
"name": "Alice",
"lastName": "Smith",
"email": "[email protected]",
"password": "password123"
}
i get a error on console like
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]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:271) ~[tomcat-embed-core-9.0.68.jar:9.0.68]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.68.jar:9.0.68]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.68.jar:9.0.68]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.68.jar:9.0.68]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.68.jar:9.0.68]
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.68.jar:9.0.68]
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.68.jar:9.0.68]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.68.jar:9.0.68]
at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
2024-03-26 17:11:04.733 INFO 9612 --- [nio-8080-exec-6] o.apache.coyote.http11.Http11Processor : Error parsing HTTP request header
Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Invalid character found in method name [0x160x030x010x000xf70x010x000x000xf30x030x030xc930xfa0xfc0xc70xbd0xf80xfcK0x1b=R0x00t0xf60x1fN0xe1m0x100x84>0x830xf0d0xc8H0xf3e0xb3KC ]. 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]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:271) ~[tomcat-embed-core-9.0.68.jar:9.0.68]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.68.jar:9.0.68]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.68.jar:9.0.68]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.68.jar:9.0.68]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.68.jar:9.0.68]
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.68.jar:9.0.68]
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.68.jar:9.0.68]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.68.jar:9.0.68]
at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
i have already checked that i am using "post" and there isnt any special characters
I HAVE CHANGED HTTPS TO HTTP AND NOW I AM NOT GETTING THE SAME ERROR RATHER GETTING THE 401 error on postman and still not able to register on the web browser
2
Answers
Change https to http in your client URL.
Check configuration whether SSL is enabled or not. If SSL is not enabled then use http in the url instead of https.