2
votes

Erreur Cors dans l'application Angular 6 .Net core 2.2

J'ai développé l'application .Net Core MVC (angulaire) et l'application Api principale .net

Dans les deux applications, j'ai activé CORS à la fois dans l'application Web et dans l'api

.Net Core

Access to XMLHttpRequest at 'http://etestservice.qa.com:5003/QA/api/test/GetDetails?email=abc@gmail.com' from origin 'http://etestweb.qa.com::5002' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource

Pour tous les Get et Post, ajoutez les en-têtes comme ci-dessous

XXX

Toujours confronté à l'erreur CORS

get(url: string, options?: any) {
    let headers = new Headers();
    headers.append('Content-Type', 'application/x-www-form-urlencoded');
    headers.append('Access-Control-Allow-Origin', '*');
    headers.append('Accept', 'applcation/ json');
    options = { headers: headers };
    const _url = this.webapiurl + url;
    return this.http.get(_url, options);    
  }


3 commentaires

vous devez appeler app.UseCors ("CorsPolicy"); avant app.UseMvc (); et autres appels app.Use ...


vous n'avez pas besoin de l'en-tête headers.append ('Access-Control-Allow-Origin', '*'); sur le client ... vous devriez le recevoir dans le cadre de la réponse du serveur


Les erreurs CORS peuvent être notoirement «faussement positives». En d'autres termes, vous obtenez une exception dans le code de votre serveur - mais dans le navigateur, cela apparaît comme une erreur CORS. Vérifiez le fichier journal de votre serveur pour les exceptions! Jetez également un œil dans l'onglet Réseau F12 - qu'obtenez-vous dans l'appel API?


4 Réponses :


1
votes

Dans le fichier startup.cs

[EnableCors("AllowSpecificOrigin")]
public class Controller
{
   // code...
}

Dans l'API,

public void ConfigureServices(IServiceCollection services)
{
        services.AddMvc();

        // app settings configuration.
        services.AddCors(options =>
        {
            // this defines a CORS policy called "default"
            options.AddPolicy("AllowSpecificOrigin", policy =>
            {
                var corsUrlSection = Configuration.GetSection("AllowedOrigins");
                var corsUrls = corsUrlSection.Get<string[]>();
                policy.WithOrigins(corsUrls)
                    .AllowAnyHeader()
                    .WithExposedHeaders("X-Pagination") // add any customer header if we are planning to send any 
                    .AllowAnyMethod();
            });
        });

}



public void Configure(IApplicationBuilder app, IHostingEnvironment environment, ILoggerFactory loggerFactory)
{

        app.UseExceptionMiddleware();

        // Use HTTPS Redirection Middleware to redirect HTTP requests to HTTPS.
        app.UseHttpsRedirection();

        app.UseCors("AllowSpecificOrigin");

        app.UseMvc();

}

L'ordre des composants Middleware est un must. Alors vérifiez-le. J'ai joint ici mon code de projet.


0 commentaires

0
votes

Ajoutez l'attribut [EnableCors ("CorsPolicy")] au-dessus de votre contrôleur

Reportez-vous également à Comment activer CORS dans ASP.NET Core < / a>


0 commentaires

0
votes

Mon fichier startup.cs:

[Route("api/[controller]")]
    [ApiController]
    [EnableCors("MyPolicy")]
    public class controllerName : ControllerBase
    {
// class boby

}

Et vous devez activer les cors dans votre classe de contrôleur comme suit.

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

//In configure
        app.UseHttpsRedirection();
        app.UseMvc();
        app.UseCors("MyPolicy");


0 commentaires