简单回答
否。 请参阅下面的代理部分以获取更新的答案。
您需要启用 CORS。根据Official Microsoft Documentation for ASP.NET Core,在关于跨域请求(CORS)的部分下,他们提供了“同源”的定义:
什么是“同源”?
如果两个 URL 具有相同的方案、主机和端口,则它们具有相同的来源。 (RFC 6454)
这两个 URL 具有相同的来源:
http://example.com/foo.html
http://example.com/bar.html
这些 URL 的来源与前两个不同:
-
http://example.net - 不同的域
-
http://www.example.com/foo.html - 不同的子域
-
https://example.com/foo.html - 不同的方案
-
http://example.com:9000/foo.html - 不同的端口 ⇦ ⇦ ⇦ ⇦ 你的问题
注意:
Internet Explorer 在比较来源时不考虑端口。
如何启用 CORS
为您的案例启用 CORS 的快速方法:
Startup.cs
app.UseCors(builder => builder.WithOrigins("localhost"));
更新:
根据this tutorial 的说法,没有CORS 也可以做到。
API 代理
您需要在 Frontend 目录中创建一个名为 proxy.conf.json 的文件:
{
"/api": {
"target": "http://localhost:65498",
"secure": false
}
}
目标值包含一个端口号。如果您使用的是 Visual Studio,则可以从后端项目属性中读取它。
这会将所有 API 请求传递给正在运行的 ASP.NET Core 应用程序。
这里我们需要做的最后一件事是修改 npm start 脚本,所以它使用代理配置。在Frontend项目中打开package.json,找到scripts部分,修改start命令为:
"start": "ng serve --proxy-config proxy.conf.json"
要在应用程序上工作,您需要同时启动 ng 开发服务器和 ASP.NET 应用程序。第一个是使用从 Frontend 目录执行的命令 npm start 启动的。后端应用程序可以从 Visual Studio 启动,也可以使用 dotnet watch run 命令行启动。如果您使用命令行版本,请注意它使用的端口并在代理配置文件中正确设置它。 dotnet 中的 watch 命令监视应用程序中的更改,并在您更改某些内容时重新构建它。