Угловая клиентская сторона не может получить политику запроса CORS, серверная часть C # - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть сервер C # WebApi, и в этом проекте я включил cors в своем WebAPiConfig.cs

 var cors = new EnableCorsAttribute(
        origins: "*",
        headers: "*",
        methods: "*"   );
        cors.SupportsCredentials = true;
        config.EnableCors(cors);

В своем угловом сервисе я установил HTTP-заголовки следующим образом

getRouteGeneralTable(routeType: string, pattern: string): Observable<DBrow[]> {
    const httpHeader = new HttpHeaders({
        'Content-Type': 'application/json',
        'withCredentials': 'true',
        'Access-Control-Allow-Origin':'*',
        'Accept': 'application/json',
        'Access-Control-Allow-Credentials': 'true',
        'Access-Control-Allow-Methods': 'POST, GET, OPTIONS, PUT'
    });
    return this.http.get<DBrow[]>(this.baseURL + 'getgeneralroutedata/' + routeType + '/' + pattern, {headers: httpHeader} )
        .pipe(
    retry(3),
    catchError(this.handleError)
    );

}

Я получаю эти ошибки при попытке сделать запрос на получение:

Access to XMLHttpRequest at  SOMEADDRESS from origin 'http://localhost:4200' has 
been blocked by CORS policy: Response to preflight request doesn't pass 
access control check: No 'Access-Control-Allow-Origin' header is present on 
the requested resource.

Как это исправить, пожалуйста?

1 Ответ

0 голосов
/ 16 декабря 2018

Добавьте следующее в ваш файл Web.Config:

<system.webServer>
  <httpProtocol>
    <customHeaders>
     <add name="Access-Control-Allow-Origin" value="*" />
     <add name="Access-Control-Allow-Headers" value="Content-Type" />
     <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
     <add name="Access-Control-Allow-Credentials" value="true" />
    </customHeaders>  
  </httpProtocol>
</system.webServer>
...