c# - 如何在 IIS 托管的 C# web 服务中强制访问控制允许来源
问题描述
我有一个托管在 IIS 10 中的 .net 网络服务。我正在尝试从有角度的前端从网络服务器获取数据。
我在 IIS 中启用了 Access-Control-Allow-Origin:
我还在我的 Web.Conf 中启用了 customHeaders:
当我尝试从有角度的前端访问 web 服务时,我收到此错误:
我正在使用来自 @angular/common/http 的 HttpClient 并尝试了几种不同的请求,但仍然没有运气。这是我最近失败的请求
public GetSlippage(tradeGroup: string, start: string, end: string, period: string, premiumFilter: number): Observable<SlippageContainer> {
let url: string = `${this._slippageUrl}/${tradeGroup}`;
let queryParams: HttpParams = new HttpParams()
.set('start', start)
.set('end', end)
.set('period', 'none')
.set('premium', String(premiumFilter));
let heads: HttpHeaders = new HttpHeaders();
heads = heads.append('Content-Type', 'text/plain');
heads = heads.append('Access-Control-Allow-Origin', '*');
console.log(`Sent Slippage Request ${start} ${end}`);
return this._httpClient.get<SlippageContainer>(url, { headers: heads, params: queryParams });
}
出于某种原因,请求在我使用http://<serverName>:port/endpoint
但不是http://<serverName.domainName.local:port/endpoint
. 最终,我希望能够在 url 中使用完全限定的域名。
解决方案
您需要在您的 asp.net 应用程序中允许 CORS。在 ConfigureServices 中添加:
services.AddCors(o => o.AddPolicy("AllowAll", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
}));
并在配置中添加:
app.UseCors("AllowAll");
您可以通过指定方法、标头和来源来制定更严格的策略。
推荐阅读
- php - Yii2 kartik/date/datepicker 在更新时显示错误的格式
- php - Wordpress WP-PageNavi 不适用于主页上的特定类别帖子
- r - 集群标签在水平 hclust dendrogram 上被切断
- python - 尝试从 DataFrame 的第一个非零值开始添加时出现问题。列中间有零值的记录
- javascript - 使用js变量替换django url标签中的多个变量
- reactjs - 嵌套在堆栈导航中的 React Native Tab Navigation How To?
- go - Golang 错误“无效的内存地址或 nil 指针取消引用”,为什么会发生这种情况?
- python - Python 的意外 FFT 结果
- docker - 使用 Docker-Compose 在 Docker 卷内生成测试 ASP.NET Core 测试结果
- javascript - HTML 中的数组方法