【问题标题】:How to force Access-Control-Allow-Origin in an IIS hosted C# webservice如何在 IIS 托管的 C# web 服务中强制访问控制允许来源
【发布时间】:2019-09-05 18:01:10
【问题描述】:

我在 IIS 10 中托管了一个 .net 网络服务。我正在尝试从 Angular 前端的网络服务器获取数据。

我在 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://&lt;serverName&gt;:port/endpoint 时请求会起作用 但不是http://&lt;serverName.domainName.local:port/endpoint。最终,我希望能够在 url 中使用完全限定的域名。

【问题讨论】:

  • 那些是响应头。
  • @DanielA.White 你能澄清一下吗?我已经在 IIS 的方法和 web.conf 的 Allow-Methods 中列出了 GET。

标签: c# angular iis cors


【解决方案1】:

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

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

并在配置中添加:

app.UseCors("AllowAll");

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

【讨论】:

    猜你喜欢
    • 2017-06-19
    • 2017-06-12
    • 2016-11-14
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 2017-03-02
    相关资源
    最近更新 更多