Home > Net >  I can't send a POST request using my browser?
I can't send a POST request using my browser?

Time:03-14

I am working on an application using Spring Boot MVC and I have a login page and whenever I input data on the forms using chrome my browser doesn't redirect me to the page I've specified in my Controler class but instead It sends a GET request where it should be sending a POST request. This is my controller class

@Controller
@RequestMapping("/login")
public class loginController {
private final AuthService authService;

public loginController(AuthService authService) {
this.authService = authService;
}

 @GetMapping
  public String returnLogIn() {
  return "login";
  }

@PostMapping
public String login(@RequestParam String username, @RequestParam String password, Model model) {

User user = null;
try {
    user = this.authService.login(username, password);
    model.addAttribute("User", user);
    return "redirect:/home";
} catch (InvalidArgumentsException exception) {

    model.addAttribute("hasError", true);
    model.addAttribute("error", exception.getMessage());
    return "login";
}

} } As you see if the login is successful then I should be redirected to the home page but It doesn't happen I get redirected to the login page again and all that changes is the URL in it the parameters I've given are appended. But when I use POSTMAN everything works just fine a POST request is sent and I get redirected to the /home page just like I've specified it in my Controller class. But I don't know why this wont happen when I use chrome. Having to use POSTMAN everytime I do a small change is really time-consuming. Also this is the HTML form

<form id="form-id"  th:action="@{/login}" th:method="post">
            <div >
                <input  type="text"  name="username" id="username"  aria-describedby="emailHelp"
                       placeholder="User Name">
            </div>
            <div >
                <input type="password"  name="password" id="password" placeholder="Password">
            </div>
            <!-- TODO use hasError set it in the model -->
            <div th:if="${hasError}">
            <span  th:text="${error}"></span>
            </div>

            <div ><button type="submit"  >Login</button></div>
            </form>

I don't think there is something wrong with my code since everything works fine when I use POSTMAN but I really don't know why It wont work when I use my browser. Javascript is enabled in my browser I really don't know what seems to be the issue. I also tried mapping the POST request to a different URL but still I get the same issue.

CodePudding user response:

I also believe that your code sample has no problem because if there is a problem it should not respond correctly from POSTMAN,Unless you have configured the application server and restricted requests from the browsers. The suggestion I can give you is to monitor requests when sending a request using tools like Fiddler (Fiddler is a powerful web debugging proxy),etc.. ,to see if both requests send the same parameters to server .

  • Related