I have An angular application (angular version Angular CLI: 8.3.26 Node: 10.13.0 OS: win32 x64 Angular: 8.2.14)
In environment.ts I have the link with my backend
export const environment = { baseUrlNG: 'http://localhost:4200/', baseUrlApi: 'http://localhost:8082/backend/api/' } The backend is a C# WebApi application. I debug it with Visual Studio with this configuration.
I installed nuget Microsoft.AspNet.WebApi.Cors and in file WebApiConfig.cs I have this code:
public static class WebApiConfig { [EnableCors(origins: "*", headers: "*", methods: "*")] public static void Register(HttpConfiguration config) { config.EnableCors(); config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{language}/{method}/{id}", defaults: new { method = RouteParameter.Optional, id = RouteParameter.Optional } ); } } And In all My backend methods I have this decorator
[EnableCors(origins: "*", headers: "*", methods: "*")] public class AuthenticationController : ApiController { [Route("api/Authentication/{language}/GuestUser")] [HttpPost] [Attributes.SiteParameter_Check] public IHttpActionResult GuestAuthorization(string language) { //code with breakpoints never raised. } In angular project I have this post
function guest(){ url = `${environment.baseUrlApi}Authentication/IT/GuestUser`; return this.http.post(url, {}, ) .toPromise() .then(response => { //other code }) } I'm getting this error
Access to XMLHttpRequest at 'http://localhost:8082/backend/api/Authentication/IT/GuestUser' 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. Already tried to put the file proxy.conf.json in the src folder of angular project
{ { "/api/*": { "target": "http://localhost:8082/backend/api", "secure": false, "logLevel": "debug" } } And I put this line in file angular.json
"serve": { "builder": "@angular-devkit/build-angular:dev-server", "options": { "browserTarget": "frontend:build", "proxyConfig": "src/proxy.conf.json" }, this is my web config
<?xml version="1.0" encoding="utf-8"?> <!-- For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=301879 --> <configuration> <configSections> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </configSections> <system.web> <compilation debug="true" targetFramework="4.6.1" /> <httpRuntime targetFramework="4.6.1" executionTimeout="1200" maxRequestLength="1048576" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" /> </system.web> <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" /> </customHeaders> </httpProtocol> <validation validateIntegratedModeConfiguration="false" /> <directoryBrowse enabled="true" /> <handlers> <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> <remove name="OPTIONSVerbHandler" /> <remove name="TRACEVerbHandler" /> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> </handlers> </system.webServer> <system.web.extensions> <scripting> <webServices> <jsonSerialization maxJsonLength="2147483647" /> </webServices> </scripting> </system.web.extensions> <connectionStrings> ---all my connection strings </connectionStrings> <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers> </entityFramework> </configuration> What I'm missing?
Thank you very much

methods: "*"in the[EnableCors]attribute before. Have you tried explicitly stating the allowed methods?methods: "GET,POST,PUT,PATCH,DELETE,OPTIONS". Also, you only need to decorate controllers / actions with[EnableCors], not the config method itself.