J'utilise une API Core Web et ont mis en place CORS comme suit;Dans ASP.NET, Réponse à la demande prévol ne passe pas vérification de contrôle d'accès: Non « Accès-Control-Allow-Origin » en-tête
public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
var url = Configuration["origenUrl"];
var header = "Content-Type";
app.UseCors(
options => options.WithOrigins(url).WithHeaders(header).AllowAnyMethod().AllowCredentials()
);
}
Cette configuration fonctionne très bien pour les demandes Get. Mais pour ma demande de vente;
$.ajax({
url: url,
method: "PUT",
xhrFields: { withCredentials: true }
})
.done(callback)
//.fail(errorMessage);
.fail(function (jqXHR, textStatus, errorThrown) {
alert("Something went wrong: " + textStatus + " " + errorThrown);
errorCallback();
});
Je reçois ce message d'erreur;
XMLHttpRequest ne peut pas charger http://localhost:17972/api/fault/1/close.
La réponse à la demande de contrôle en amont ne passe pas contrôle d'accès contrôle: Non L'en-tête 'Access-Control-Allow-Origin' est présent sur la ressource demandée. Origine « http://localhost:12528 » est donc pas permis accès. La réponse avait le code d'état HTTP 401.
De Fiddler ma demande http est;
OPTIONS http://localhost:17972/api/fault/10/close HTTP/1.1
Accept: /
Origine: http://localhost:12528
Access-Control-Demande-Méthode: PUT
Access-Control-requête- En-têtes: accepter
UA-CPU: AMD64
Accept-Encoding: gzip, dégonfler
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; Trident/7,0; rv: 11.0) comme Gecko
: localhost: 17972
Content-Length: 0
DNT: 1
Connection: Keep-Alive
Pragma: no-cache
Alors, comment puis-je résoudre ce problème?
EDIT J'ai aussi essayé ce code juste pour le faire fonctionner, mais je reçois la même erreur;
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
//var url = Configuration["originUrl"];
//app.UseCors(
// options => options.WithOrigins(url).AllowAnyHeader().AllowAnyMethod().AllowCredentials()
//);
app.UseCors(
options => options.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().AllowCredentials()
);
app.UseMvc();
}
Avez-vous ajouté le type de contenu? –
J'ai mis "Content-Type" dans la variable d'en-tête qui est ensuite incluse dans la méthode WithHeaders comme vous pouvez le voir dans le code. J'ai depuis essayé "AnyHeader()" avec le même résultat. – arame3333
Désolé, je n'ai pas expliqué si fin, je parlais de la demande. Avez-vous une requête HTTP brute? –