user840930
user840930

Reputation: 5578

How to set Access-Control-Allow-Origin when using @RestController?

I am using @RestController to provide a REST service. But I need to set Access-Control-Allow-Origin in the response header. How would I do this?

My RestController:

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class restController  {

   @RequestMapping("/some")
   public Response some(@RequestParam(value="body")  String user) {
      return new Response(user);
   }
}

My Response:

public class Response {

  long id;
  String user;

  public Response(String user) {
       this.id = 7;
       this.user = user;
  }
}

@RestController works very well but how can I modify it or the response to set Access-Control-Allow-Origin?

Upvotes: 0

Views: 2265

Answers (2)

Danica Zdravkovic
Danica Zdravkovic

Reputation: 1

Adding @CrossOrigin("http://localhost:3000") at the top of my class or before method in REST controller works. Thanks a lot! Example:

@RestController
@RequiredArgsConstructor
@CrossOrigin("http://localhost:3000")
public class UserController {

    private final UserService userService;


    @PostMapping("/api/user/login")
    @ResponseStatus(HttpStatus.OK)
    ResponseEntity<Object> customerLogin(@RequestBody UserDto userDto) {
        try {
            UserDto entity = userService.login(userDto);
            return ResponseEntity.status(HttpStatus.OK).body(entity);

        } catch (RuntimeException e) {
            return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getMessage());
        }
    }

Upvotes: 0

Seymur Asadov
Seymur Asadov

Reputation: 672

Try this code:

  @CrossOrigin(origins = "*")
   @RequestMapping("/some")
   public Response some(@RequestParam(value="body")  String user) {
      return new Response(user);
   }

or this

@RequestMapping("/some")
public Response some(@RequestParam(value="body")  String user,HttpServletResponse 
response) {
   response.addHeader("Access-Control-Allow-Origin", "*");
   return new Response(user);
}

Upvotes: 1

Related Questions