I have an Angular 6 project, which has a service with is pointing to a server.js
Angular is on port: 4200 and Server.js is on port: 3000.
When I point the service to http://localhost:3000/api/posts
(Server.js location), I'm getting this error:
Failed to load http://localhost:3000/api/posts: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access.
Here is the server.js code:
// Get dependencies
const express = require('express');
const path = require('path');
const http = require('http');
const bodyParser = require('body-parser');
// Get our API routes
const api = require('./server/routes/api');
const app = express();
// Parsers for POST data
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
// Point static path to dist
app.use(express.static(path.join(__dirname, 'dist')));
// Set our api routes
app.use('/api', api);
// Catch all other routes and return the index file
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'dist/myproject/index.html'));
});
/**
* Get port from environment and store in Express.
*/
const port = process.env.PORT || '3000';
app.set('port', port);
/**
* Create HTTP server.
*/
const server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port, () => console.log(`API running on localhost:${port}`));
My question is:
How to I get server.js to allow this call?
Since you are using express, you could create a middleware and use it to redirect all your endpoints. Here is a working snippet of the same:
Place it before you are setting your routes and you should be good.
Check out: https://github.com/pyronlaboratory/phoenix/blob/master/messageboard/backend/server.js for understanding usage of middlewares in routing endpoints using express.js.
Great! you need to enable domain CORS that can make requests! You can try that
Or you can just set
localhost:4200
or something like thatTry that and tell me if worked! Thanks! Hope this helps!