Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
- 
                    2Possible duplicate of [No 'Access-Control-Allow-Origin' header in Angular 2 app](https://stackoverflow.com/questions/36002493/no-access-control-allow-origin-header-in-angular-2-app) – Haseoh Aug 01 '17 at 10:25
 
2 Answers
This is not an issue of Angular 4. Pre flight requests are sent whenever an application residing on server A attempts to do an API call on Server B.
If you are using webpack-dev-server (for example on localhost 4000), and your backend server (jBoss, Tomcat, etc) on localhost:8080, the browser performs a preflight request to check for the Access-Control headers.
By default, the server does not include these headers. They need to be added either by your server, or by a proxy server such as Nginx or Apache that is sitting between the front end server (/domain) and the backend server.
- 3,613
 - 1
 - 20
 - 29
 
I have a solution for this. You need to add a proxy.conf.json file in your root directory, with your server path like this.
{
    "/FOLDER_PATH from root/*": {
        "target": "YOUR_DOMAIN with folder path",
        "secure": false,
        "logLevel": "debug",
        "pathRewrite": {
            "^/FOLDER_PATH from root": "FOLDER_PATH from root"
        }
    }
}
Then you need to update your package.json file like this
"start": "ng serve", to `"start": "ng serve --proxy-config proxy.conf.json",
Also don't forget to use $ npm start instead of ng serve
- 4,075
 - 4
 - 24
 - 44
 
- 261
 - 3
 - 5