Uygulamam için siteler arası komut dosyası oluşturmayla ilgili bir sorunum var. i almak bir POST yapmak çalıştığınızda istekleri iyi çalışır GET:CORS: ASP.NET 4.5.1 ile MVC istemi MVC
XMLHttpRequest cannot load http://localhost:49187/api/CampaignRegistration. The request was redirected to 'http://localhost:49187/Authentication/UnAuthorized?ReturnUrl=%2Fapi%2FCampaignRegistration', which is disallowed for cross-origin requests that require preflight.
Benim uçuş öncesi isteği (kimlik doğrulama başlığındaki olmadan) 200 Tamam döndürür ama benim asıl isteği 302 Not Found döndürür (benim kimlik doğrulama başlığını içerir).
Access-Control-Request-Headers:accept, content-type
Access-Control-Request-Method:POST
ve yanıttır:
Benim uçuş öncesi isteği şöyle
Access-Control-Allow-Headers:content-type
Access-Control-Allow-Origin:*
Ve talebim yük başlıkları şunlardır: in
{Cache-Control: "no-cache", Authorization: "Basic XXXXX"}
Ben sağladı CORS benim WebApiConfig.cs bunun gibi (orijini değiştireceğim: * gerçekten çalışırken). Web.config'de CORS ile ilgili her şeyi kaldırdım.
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
Benim WebAPI Kontrolörleri tüm
şöyle bir özel kimlik doğrulaması özelliği içeren BasicApiController uzatır: Benim önyüzü backbone.js kullanılarak yapıldı ama gerçekten sorun olduğunu düşünmüyorumprotected override bool IsAuthorized(HttpActionContext actionContext)
{
try
{
if (HttpContext.Current.Request.Headers.AllKeys.Contains("Authorization"))
{
string authHeader = HttpContext.Current.Request.Headers["Authorization"];
string cred =
Encoding.UTF8.GetString(Convert.FromBase64String(authHeader.Substring("Basic ".Length)));
string[] parts = cred.Split(':');
string userName = parts[0];
string password = parts[1];
if (userName == _configRepository.WebApiUsername && password == _configRepository.WebApiPassword)
{
return true;
}
}
return false;
}
catch (Exception ex)
{
return false;
}
}
ön tarafta. Web.config'i hiçbir faydaya dönüştürmeyi denedim, CORS'yi yaptığım gibi etkinleştirdikten sonra hiçbir şey yapmama gerekenden. Uygulamam OPTIONS (preflight istekleri dışında) kullanmıyor, ancak beklendiği gibi, ön kontrol isteği hiçbir şey yapmadığı için OPTIONS yöntemleri için kimlik doğrulamasını atlamayı denedim. Eğer herhangi bir fikri varsa, çok takdir edilecektir!