如何调试或修复 ng serve 出现 400 错误?
How do I debug or fix ng serve giving a 400 error?
我想 运行 我的 Angular 应用程序使用 ng serve
这样我就可以进行一些开发并实时查看结果。
- 我运行这个命令:
ng serve --ssl --open
- 需要几秒钟才能compile/build。
- 返回报告:
Date: 2020-07-28T14:01:07.382Z - Hash: ******** - Time: 20167ms ** Angular Live Development Server is listening on localhost:4200, open your browser on https://localhost:4200/ ** i 「wdm」: Compiled successfully.
- 这会打开 Chrome 到 https://localhost:4200/
- 我收到如下所示的错误页面。
- 在开发人员工具中,有一个 400 Bad Request 错误响应。我不知道为什么。
我尝试在 ng serve
上使用 --verbose
选项,但我只收到冗长的构建消息 - 与请求本身无关,也没有说明为什么 GET 是错误请求。
我的 Angular 版本是:
Angular CLI: 8.3.29
Node: 10.16.3
OS: win32 x64
Angular: 8.2.14
要使用 ssl 证书为您的应用程序提供服务,您需要生成 ssl 证书。
如果没有 openssl 命令,您可能需要下载它。
在我的示例中,我将自签名证书仅用于 运行 开发环境 (localhost) 中的应用程序。
只需使用命令生成新的自签名证书:
openssl req -new -x509 -newkey rsa:2048 -sha256 -nodes -keyout localhost.key -days 3560 -out localhost.crt
只需回答提示的问题,它将生成两个文件 .crt
和 .key
.
在您的 angular 应用程序根文件夹 copy/paste 中生成了两个文件。
之后 运行 命令:
ng serve --ssl --ssl-key certs/localhost.key --ssl-cert certs/localhost.crt
现在它将在启用 https 的情况下为您的应用程序提供服务。会出现这个警告,可以忽略(开发环境),点击advanced
.
之后点击proceed to localhost
这里是通过 https 访问的证据:
不使用 ssl 访问的说明
选项 -ssl
是使用 https
协议为您的应用程序提供服务的参数。正如 angular cli documentation.
所述
为了解决这个问题,您需要从当前的 ng serve
命令调用中删除 -ssl
选项。
调用应该是:
ng serve
之后您应该可以在没有 https
的情况下访问您的应用程序。在你的申请中 url.
只需以隐身模式打开浏览器和一个新标签页(用于清理浏览器缓存)。
http://localhost:4200
请注意,正在使用默认端口 (port 4200
)。您必须根据当前配置访问 url。
如@Jess(原发帖人)所述,为确保与您的后端没有通信问题,您必须启用 CORS 策略(在您的后端)到您当前由前端服务的地址(当前为 http:/ /localhost:4200).
我想 运行 我的 Angular 应用程序使用 ng serve
这样我就可以进行一些开发并实时查看结果。
- 我运行这个命令:
ng serve --ssl --open
- 需要几秒钟才能compile/build。
- 返回报告:
Date: 2020-07-28T14:01:07.382Z - Hash: ******** - Time: 20167ms ** Angular Live Development Server is listening on localhost:4200, open your browser on https://localhost:4200/ ** i 「wdm」: Compiled successfully.
- 这会打开 Chrome 到 https://localhost:4200/
- 我收到如下所示的错误页面。
- 在开发人员工具中,有一个 400 Bad Request 错误响应。我不知道为什么。
我尝试在 ng serve
上使用 --verbose
选项,但我只收到冗长的构建消息 - 与请求本身无关,也没有说明为什么 GET 是错误请求。
我的 Angular 版本是:
Angular CLI: 8.3.29
Node: 10.16.3
OS: win32 x64
Angular: 8.2.14
要使用 ssl 证书为您的应用程序提供服务,您需要生成 ssl 证书。
如果没有 openssl 命令,您可能需要下载它。
在我的示例中,我将自签名证书仅用于 运行 开发环境 (localhost) 中的应用程序。 只需使用命令生成新的自签名证书:
openssl req -new -x509 -newkey rsa:2048 -sha256 -nodes -keyout localhost.key -days 3560 -out localhost.crt
只需回答提示的问题,它将生成两个文件 .crt
和 .key
.
在您的 angular 应用程序根文件夹 copy/paste 中生成了两个文件。
之后 运行 命令:
ng serve --ssl --ssl-key certs/localhost.key --ssl-cert certs/localhost.crt
现在它将在启用 https 的情况下为您的应用程序提供服务。会出现这个警告,可以忽略(开发环境),点击advanced
.
之后点击proceed to localhost
这里是通过 https 访问的证据:
不使用 ssl 访问的说明
选项 -ssl
是使用 https
协议为您的应用程序提供服务的参数。正如 angular cli documentation.
为了解决这个问题,您需要从当前的 ng serve
命令调用中删除 -ssl
选项。
调用应该是:
ng serve
之后您应该可以在没有 https
的情况下访问您的应用程序。在你的申请中 url.
只需以隐身模式打开浏览器和一个新标签页(用于清理浏览器缓存)。
http://localhost:4200
请注意,正在使用默认端口 (port 4200
)。您必须根据当前配置访问 url。
如@Jess(原发帖人)所述,为确保与您的后端没有通信问题,您必须启用 CORS 策略(在您的后端)到您当前由前端服务的地址(当前为 http:/ /localhost:4200).