Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I'm using jwt for authentication, I'm suspecting that it has something to do with the request header which has the token.

Receiving a server sent event without adding @PreAuthorize works just fine:

@GetMapping("/sse")
public SseEmitter serverSentEvent() throws IOException
   SseEmitter emitter = new SseEmitter(2592000000L);
   emitter.send("OK");
   return emitter;

How ever when i add @PreAuthorize to check use role, i get a 406 response (can’t establish a connection to the server at http://localhost:8080/sse)

@GetMapping("/sse")
@PreAuthorize("hasRole('ADMIN')")
public SseEmitter serverSentEvent() throws IOException
   SseEmitter emitter = new SseEmitter(2592000000L);
   emitter.send("OK");
   return emitter;
                HTTP 406 is "Not Acceptable", so the hint may be that you require an accept header.  It may also be the case that your endpoint needs to accept some MIME-type as well (like application/json or something more appropriate).
– Makoto
                Dec 20, 2018 at 17:29
                I'm using EventSource on the client, which sends a GET request to the URL with the accept header text/event-stream
– Muizz Mahdy
                Dec 20, 2018 at 17:38
        

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.