首页 > 解决方案 > 如何在 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 中使用完全限定的域名。

标签: c#angulariiscors

解决方案


您需要在您的 asp.net 应用程序中允许 CORS。在 ConfigureServices 中添加:

services.AddCors(o => o.AddPolicy("AllowAll", builder =>
{
    builder.AllowAnyOrigin()
           .AllowAnyMethod()
           .AllowAnyHeader();
}));

并在配置中添加:

app.UseCors("AllowAll");

您可以通过指定方法、标头和来源来制定更严格的策略。


推荐阅读