J'ai essayé de déplacer tous mes appels de méthode au moins 10 000 fois. J'ai besoin du numéro de tentative 10 001 pour être le gagnant! Qu'est-ce que je fais mal?
Je reçois toujours l'erreur liée à CORS, mais j'ai suivi les guides pour essayer de la résoudre.
fetch('http://localhost:44387/api/Users/GetTest').then(function (response) {
this.state.user = response.text();
});
En réaction, j'ai ceci:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddDefaultPolicy(
builder =>
{
builder.WithOrigins("http://localhost:3000").AllowAnyHeader().AllowAnyMethod();
});
});
//services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
services.AddControllers();
services.AddAuthentication(IISDefaults.AuthenticationScheme);
services.AddSwaggerGen();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "MES vs API");
});
app.UseHttpsRedirection();
app.UseRouting();
app.UseCors("AllowAnyOrigin");
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
3 Réponses :
Vous effectuez des requêtes http mais vous avez activé HttpsRedirection.
Si vous développez sans https, vous devez déplacer l' app.UseHttpsRedirection(); appeler dans un bloc de code qui ne sera exécuté qu'en production. par exemple
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else // Production
{
app.UseHttpsRedirection();
}
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "MES vs API");
});
app.UseRouting();
app.UseCors(); // Use default policy as defined in example code
//...
Vous ajoutez également une stratégie UseCors() par défaut, mais lorsque vous appelez UseCors() vous utilisez une stratégie nommée (AllowAnyOrigin).
Définissez une stratégie nommée "AllowAnyOrigin" ou appelez simplement app.UseCors(); pour utiliser la stratégie par défaut.
Cela change-t-il le fait qu'il peut fonctionner en mode http et https?
@MuhammetCaylak En développement à la fois http et https (si le certificat est installé). En production, il n'utilisera que https
Pouvez-vous essayer de l'utiliser de cette façon?
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseCors("AllowAnyOrigin");
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "MES vs API");
});
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
J'utilise ceci pour le conteneur d'injection de dépendance lors de la définition de la stratégie CORS
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
//ALLOW CORS
app.UseCors("CorsPolicy");
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
puis appliquer la politique CORS
//CORS CONFIGURATION
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder.SetIsOriginAllowed(_ => true)
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
J'ai réussi à faire en sorte que l'appel API sur le client reste bloqué avec un statut (en attente). Il y a donc ......... que ...
Veuillez ouvrir la console de développement dans votre application react et vérifier l'appel HTTP sous l'onglet "Réseau" de la console. Sur l'appel spécifique, l'en-tête "Access-Control-Allow-Origin" est-il présent dans les en-têtes de réponse?
C'était jusqu'à ce que je déconne dans le Startup.cs - résultant en le code que j'ai publié. Maintenant, il reste en attente puis échoue finalement avec une erreur CONNECTION_RESET dans F12. Cela prend quelques minutes.
app.UseHttpsRedirection();déplacez-lele déplacer? Jusqu'où?
Je ne sais pas ce que tu veux dire @MuhammetCaylak
cette
app.UseCors("AllowAnyOrigin"),app.UseSwagger()déplacer