Как добавить заголовок в ответ сокета? - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь создать систему уведомлений, используя сокет.

Мой код:

WebSocketConfiguration.java

    @Configuration
    @EnableWebSocketMessageBroker
    public class WebSocketConfiguration extends 
    AbstractWebSocketMessageBrokerConfigurer {

        @Override
        public void registerStompEndpoints(StompEndpointRegistry registry) {
            registry.addEndpoint("/handler")
                .setAllowedOrigins("http://city.localhost")
                .withSockJS();
        }

        @Override
        public void configureMessageBroker(MessageBrokerRegistry brokerRegistry) {
            brokerRegistry.setApplicationDestinationPrefixes("/app");
            brokerRegistry.enableSimpleBroker("/topic", "/queue");
        }

    }

NotificationController.java

@RestController
@RequestMapping("/api")
public class NotificationController {

    @Autowired
    private SimpMessagingTemplate template;

    @Autowired
    private NotificationService notificationService;

    @Autowired
    private UserRepository userRepository;

    @RequestMapping(value = "/notification", method = RequestMethod.GET)
    public List<Notification> sendNotification() {
        List<Notification> notifications = notificationService.findAll();

        //Here I'm trying to add a header, but it does not work
        Map<String, Object> headers = new HashMap<>();
        headers.put("Access-Control-Allow-Origin", "http://city.localhost");

        template.convertAndSend("/topic/all", notifications, headers);
        return notifications;
    }

}

tification.js

class Notification extends React.Component {
    constructor(props){
    super(props);
    this.state = {
      ignore: true,
      title: ''
    };
  }
    render() {
      const wsSourceUrl = "http://localhost/handler";

      return (
        <div>
            <SockJsClient url={ wsSourceUrl } topics={["/topic/all"]}
                      onMessage={ this.onMessageReceive }
                      onConnect={ () => { console.log("connected") } }
                      onDisconnect={ () => { console.log("connected") } }
                      debug={ false }/>
      </div>
    )
  }
}

Теперь у меня проблема:

enter image description here

Как я понял, проблема в том, что в ответе Access-Control-Allow-Origin стоит "*", и мне нужно http://city.localhost/, Я не смог бы поставить такойзаголовок в ответе.Я могу ошибаться и может быть проблема не в этом, я буду рад любой помощи

...