title: Getting a CORS error when trying to establish socket.io connection between back-end on localhost:3000 and front-end on localhost:8080
body: <p>I'm trying to figure out how to create a real time chat application that uses Vue.js for the front-end, Node.js for the back-end and socket.io.</p>
  
  <p>I've generated my back-end Node.js project with express-generator and the project is accessible at <a href="http://localhost:3000" rel="nofollow noreferrer">http://localhost:3000</a>. In this project I have an index.js file that contains this:</p>
  
  <pre><code>var express = require('express');
  var http = require('http').createServer(express);
  var io = require('socket.io')(http);
  
  io.on('connection', (socket) =&gt; {
      console.log('a user connected');
  });
  </code></pre>
  
  <p>My front-end is a Vue.js project accessible from <a href="http://localhost:8080" rel="nofollow noreferrer">http://localhost:8080</a> and the component that is meant to connect to my back-end contains this:</p>
  
  <pre><code>&lt;template&gt;
      &lt;div class="home"&gt;
          Hello
      &lt;/div&gt;
  &lt;/template&gt;
  
  &lt;script&gt;
  import socket from 'socket.io-client'
  
  export default {
      mounted(){
          socket.connect('http://localhost:3000')
      }
  }
  
  &lt;/script&gt;
  </code></pre>
  
  <p>Sadly the socket connection doesn't seem to go through. On the front-end console I get these errors - </p>
  
  <pre><code>Access to XMLHttpRequest at 'http://localhost:3000/socket.io/?EIO=3&amp;transport=polling&amp;t=N6JFKSo' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
  polling-xhr.js?d33e:268 GET http://localhost:3000/socket.io/?EIO=3&amp;transport=polling&amp;t=N6JFKSo net::ERR_FAILED
  </code></pre>
  
  <p>And on the back-end console I get errors like this one - <code>GET /socket.io/?EIO=3&amp;transport=polling&amp;t=N6JFrfo 404 5.289 ms - 975</code></p>
  
  <p>I can't figure out why is this happening.</p>