在开发模式下,我使用 Angular2 CLI 的“ng serve”命令为 localhost:4200 上的应用程序提供服务。这很好,因为对源文件的任何调整都会导致快速重建,并且浏览器会自动重新加载更改。
我的应用程序向在 localhost:8080 上运行的 Jetty 服务器上的 RESTful api 发出 http 请求。但是所有请求都失败了,并且非常无用:“例外:状态响应:0 表示 URL 为空”。相反,如果我还通过将 Angular 应用程序指向客户端项目的 dist 目录来提供来自 Jetty 服务器的 Angular 应用程序,则一切正常。通过查找有关类似问题的问题,我认为这可能是跨域请求 (CORS) 问题。
但是,如果我必须从与 RESTful api 相同的服务器/端口为客户端应用程序提供服务,我将失去从“ng serve”获得的自动重建/重新加载的优势。“ng build”比较慢。
有没有办法解决?
更新:
正如答案中所确认的,这是一个 CORS 问题。我设法通过使用org.eclipse.jetty.servlets.CrossOriginFilter
. 但是,我选择了使用ng build -o dist -w
作为答案,因为这解决了我构建速度较慢的问题,在这种情况下,我很高兴将我的 Jetty 服务器指向 dist 目录中的客户端文件并提供所有内容(客户端和 api)来自同一个港口。
这是一个与 CORS 相关的问题,但要回答您的问题,您可以使用 -p 标志将不同的端口与 ng serve 一起使用: ng serve -p 8080
您还可以在-w
运行时使用该标志来“监视”文件更改ng build
,这样它就会在进行更改时更新您指向的 dist 目录。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句