(已解决)在尝试转换《英雄之旅 Angular 7 演示》以对远程 MySQL 数据库进行 REST 调用时,我遇到了类似的错误。我什至尝试将 Apache 服务器移动到我的本地计算机:
访问 XMLHttpRequest 位于 'http://localhost/angular-php-app/backend http://localhost/angular-php-app/backend'从原点'http://本地主机:4200 http://localhost:4200' 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:预检请求不允许重定向。
解决方案,我在这里找到了 ->http://blog.wsoft.se/category/tips-tricks/ http://blog.wsoft.se/category/tips-tricks/
这是我在我的角度应用程序中所做的:
安装 cors 代理服务器
/tour-of-heroes-mysql>npm install -g cors-proxy-server
...Roaming\npm\cors-proxy-server -> ...Roaming\npm\node_modules\cors-proxy-server\index.js
+ cors-pro[email protected] /cdn-cgi/l/email-protection
added 8 packages from 10 contributors in 2.376s
开始了
tour-of-heroes-mysql>HOST=127.0.0.1 PORT=9090 cors-proxy-server &
[1] 17172
/tour-of-heroes-mysql>[Sun Jan 27 2019 10:52:13 GMT-0500 (Eastern Standard Time)] - CORS Proxy Server started on 127.0.0.1:9090
编辑 Heroes.service 以更改 URL 以包含代理
private heroesUrl = 'http://localhost/angular-php-app/backend'; // URL to web api
--> private heroesUrl = 'http://localhost:9090/http://localhost/angular-php-app/backend'
保存更改并成功!!!
注意:“PUT”操作存在一些问题,不确定代理是否正确处理这些问题。发现这是使用 CHROME 的更好解决方案,只需通过调整目标上的 Windows 属性来禁用检查即可:
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:/ChromeDevSession"
(注意 - 当您启动 CHROME 时,您会收到“不支持”警告,但它可以工作。在桌面上创建一个特殊的快捷方式,仅用于测试)