Socket.io: Erro CORS na versão mais recente

Criado em 9 nov. 2020  ·  7Comentários  ·  Fonte: socketio/socket.io

A versão mais antiga do socket.io funciona bem, mas a versão mais recente mostra um erro CORS ao tentar conectar de frente para trás. Também adicionei middleware CORS ao servidor, mas não está funcionando. Mas quando eu volto para a versão mais antiga do socket, ele está funcionando bem.

image

question

Comentários muito úteis

Oi! Desculpe por isso, a documentação está em processo de atualização para a v3.

Eu adicionei uma seção sobre CORS aqui: https://socket.io/docs/v3/handling-cors/

Você poderia verificar se isso está claro o suficiente?

Todos 7 comentários

Olá, acredito que seja porque a documentação não reflete a alteração feita com a versão 3.0.
Consulte este link https://socket.io/docs/migrating-from-2-x-to-3-0/ , seção Tratamento de CORS.

Não vou mentir, é meio chato. Comecei a jogar com o socket.io hoje e agora há bloqueios de estradas. Eu faria o downgrade para 2.x, mas parece que a documentação não tem controle de versão.

Oi! Desculpe por isso, a documentação está em processo de atualização para a v3.

Eu adicionei uma seção sobre CORS aqui: https://socket.io/docs/v3/handling-cors/

Você poderia verificar se isso está claro o suficiente?

@darrachequesne obrigado, está resolvido!

Isso pode causar problemas para pessoas com projetos glitch.me. Ao atualizar o para v3, os projetos glitch.me começam a responder com o erro postado por saifulshihab. No entanto, parece que o CORS é contra o glitch.me e os TOS da AWS e terá um projeto removido. Existe uma maneira de executar o framework v3 sem incluir CORS?

Não entendo totalmente o que é CORS e por que é um problema. Estou apenas tentando montar um plano.

Olá @quindo - só queria esclarecer que habilitar o CORS não é contra os TOS do Glitch. Alguns usuários estavam usando pacotes npm específicos como CORS-anywhere por motivos maliciosos e isso vai contra o nosso TOS.

para quem enfrenta o problema: -

// server-side
const io = require("socket.io")(httpServer, {
  cors: {
    origin: "https://example.com",
    methods: ["GET", "POST"],
    allowedHeaders: ["my-custom-header"],
    credentials: true
  }
});

// client-side
const io = require("socket.io-client");
const socket = io("https://api.example.com", {
  withCredentials: true,
  extraHeaders: {
    "my-custom-header": "abcd"
  }
});

Eu acho que isso agora pode ser fechado. Reabra se necessário.

Esta página foi útil?
0 / 5 - 0 avaliações