Ошибка Access-Control-Allow-Origin при подключении через веб-сокет - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь подключиться к своей веб-розетке из другого домена. Сервер находится на локальном хосте: 8098, а клиент на локальном хосте: 8080. Каждый раз, когда я пытаюсь подключиться, я получаю ошибку «Access-Control-Allow-Origin», я также добавляю .setAllowedOrigins("*").

Не уверен, что не хватает.

Сервер

@Configuration
@EnableWebSocketMessageBroker
public class webSocketObjects implements WebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic");
        config.setApplicationDestinationPrefixes("/app");

    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/ws/Object").setAllowedOrigins("*").withSockJS();


    }

Клиент

<script>
    let stompClient=null;
    import Stomp from 'stompjs';
    import SockJS from 'sockjs-client'
    export default {
        name: "modal",
        props: ['node'],
        data() {
            return{
                bacnetObject: '',
                status: "disconnected"


        }
        },
        mounted() {
            this.bacnetObject = this.node;
        },
        methods: {
            connect: function(){
                const socket = new SockJS('http://localhost:8098/ws/Object');
                stompClient = Stomp.over(socket);
                stompClient.connect({
                }, function (frame) {
                    console.log('Connected: ' + frame);
                    stompClient.subscribe('/topic/user', console.log(String.body))

                })
    },
            disconnect: function () {
                stompClient.disconnect();
            }
    }
    }
</script>

Ошибка, которую я получаю:

Доступ к XMLHttpRequest по адресу http://localhost:8098/ws/Object/info?t=1571728150435' от источникаhttp://localhost:8080' заблокировано политикой CORS: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».

1 Ответ

0 голосов
/ 22 октября 2019

Если вы используете учетные данные, * не будет работать в соответствии с документацией в MDN. Попробуйте вместо этого указать хост.

Для запросов без учетных данных, буквенное значение "*" может быть указано как подстановочный знак;значение указывает браузерам разрешить запрашивать код из любого источника для доступа к ресурсу. Попытка использовать подстановочный знак с учетными данными приведет к ошибке.

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin

С другой стороны, иногда в зависимости от вашего случая вам, возможно, придется позаботиться об этихзаголовки

Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: header1, header2 ...

https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Preflighted_requests

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...