对预检请求的响应未通过访问控制检查:请求的资源上没有“Access-Control-Allow-Origin”标头。
答案 0 :(得分:1)
这不是Angular 4的问题。只要驻留在服务器A上的应用程序尝试在服务器B上执行API调用,就会发送预飞行请求。
如果您在localhost:8080上使用webpack-dev-server(例如在localhost 4000上)和后端服务器(jBoss,Tomcat等),浏览器会执行预检请求以检查Access-Control标头
默认情况下,服务器不包含这些标头。它们需要由您的服务器或位于前端服务器(/域)和后端服务器之间的代理服务器(如Nginx或Apache)添加。
答案 1 :(得分:1)
我有一个解决方案。您需要在根目录中添加proxy.conf.json
文件,并使用您的服务器路径。
{
"/FOLDER_PATH from root/*": {
"target": "YOUR_DOMAIN with folder path",
"secure": false,
"logLevel": "debug",
"pathRewrite": {
"^/FOLDER_PATH from root": "FOLDER_PATH from root"
}
}
}
然后您需要像这样更新package.json
文件
"start": "ng serve", to `"start": "ng serve --proxy-config proxy.conf.json",
也不要忘记使用$ npm start instead of ng serve