asp.net-core - 无法在本地 ASP.NET Core MVC 服务之间进行跨源请求
问题描述
我有两个在本地运行的应用程序。一个是 Web 服务https://localhost:44365
,另一个是 Web 应用程序https://localhost:44360
。Web 应用程序需要访问 Web 服务。
Web 服务设置了一个 cors 策略,应该允许这样做:
// For running on local pc
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
...
app.UseCors("CorsPolicy");
app.useMvc();
...
}
当我运行这两个应用程序并在浏览器中点击 Web 应用程序时,我得到了跨源错误:
无法加载https://localhost:44365/api/users/current/avatarText:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问源“ https://localhost:44360 ”。响应的 HTTP 状态代码为 500。
服务中的标头(在 44365 处)是:
access-control-allow-credentials: true
access-control-allow-headers: content-type
access-control-allow-origin: https://localhost:44360
奇怪的是,我还在有问题的方法中显示了 500 服务器错误。虽然当应用程序(44360)调用它时,我能够逐步执行该方法(在 44365 中)并且该方法中没有 500。当呼叫不是跨源时,我可以成功呼叫它。
解决方案
您应该使用AllowAllOrigins
options.AddPolicy("AllowAllOrigins",
builder =>
{
builder.AllowAnyOrigin();
});
在允许来自任何来源的请求之前仔细考虑。允许来自任何来源的请求意味着任何网站都可以向您的应用发出跨域请求。
此设置会影响预检请求和 Access-Control-Allow-Origin 标头(本主题后面将介绍)。
推荐阅读
- javascript - 如何将带有剪切路径和蒙版的 SVG 放在图像 src 中?
- arrays - 组装练习(数组)
- node.js - 创建 Google 云存储桶会引发错误
- ssas-tabular - 从存储过程中的 SSAS 表格加载分区未并行运行
- apache-kafka - enable.auto.commit 和 auto.commit.interval.ms 如何影响消费者的偏移提交
- java - Selenium - TestNG:测试没有并行运行 - 使用 selenium + java + browserstack
- python - 如何使用 python 抓取谷歌地图的所有数据
- react-native - React Native - PanGestureHandler 在更改组件状态后不起作用
- laravel - 我应该如何为需要引用数据透视表的表配置 Laravel / OctoberCMS 模型?
- r - 使用向量替换字符串