如何在IIS托管的C#Web服务中强制执行A​​ccess-Control-Allow-Origin

时间:2019-04-15 17:33:24

标签: c# angular iis cors

我在IIS 10中托管了一个.net Web服务。我正在尝试从一个有角度的前端从Web服务器获取数据。

我在IIS中启用了Access-Control-Allow-Origin: enter image description here

我还在Web.Conf中启用了customHeaders:

enter image description here

当我尝试从有角度的前端访问Web服务时,收到此错误:

enter image description here

我正在使用@ 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中使用完全限定的域名。

1 个答案:

答案 0 :(得分:0)

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

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

,然后在“配置”中添加:

app.UseCors("AllowAll");

您可以通过指定方法,标头和来源来制定更具限制性的策略。