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