Üç farklı SPA tarafından çağrılan bir ASP.NET web API vardır. Web API'sı için Windows kimlik doğrulaması kullanıyorum.ASP.NET Web API CORS nasıl çözülür? PUT ve DELETE isteklerini birden çok kaynak kullanarak kullanırken ön kontrol sorunu?
Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin (...) is therefore not allowed access.
Ben Global.asax.cs aşağıdaki yöntemi ekleyerek çözüldü: Bu, bu uçuş öncesi konuyu neden
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="http://localhost:63342" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE" />
<add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
<add name="Access-Control-Allow-Credentials" value="true" />
</customHeaders>
</httpProtocol>
: Başlangıçta böyle Web.config, CORS'yi yapılandırmak için çalıştı
protected void Application_BeginRequest()
{
if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS")
{
Response.Flush();
}
}
Bu yaklaşım tek bir SPA için mükemmel bir şekilde çalıştı.
<add name="Access-Control-Allow-Origin" value="http://localhost:63342,http://localhost:63347,http://localhost:63345/>
ama görünüşe göre izin verilmez: Ben Web.config gidip bu gibi diğer kökenlerini eklemek düşündüm. Bu, aşağıdaki hata üretilen:
: Yani denemek ve bunu düzeltmek için, benim yaklaşım değişti ve bunun yerine böyle Kayıt yönteminde, WebAPIConfig.cs üzerinde CORS'yi yapılandırmak denemeye karar verdiThe 'Access-Control-Allow-Origin' header contains multiple values (...), but only one is allowed. Origin (...) is therefore not allowed access.
var cors = new EnableCorsAttribute("http://localhost:63342,http://localhost:63347,http://localhost:63345", "Origin, X-Requested-With, Content-Type, Accept", "GET, POST, PUT, DELETE");
cors.SupportsCredentials = true;
config.EnableCors(cors);
Bunun işe yarayacağını düşündüm ancak şimdi PUT ve DELETE isteklerini kullanırken ön far hatalarını tekrar ediyorum ve bunu nasıl düzeltebileceğimi bilmiyorum. Application_BeginRequest yönteminde hata ayıkladım ve hala OPTIONS isteğini temizliyorum, bu nedenle bu hatanın nedenine dair hiçbir fikrim yok. Bu sorunu nasıl çözebileceğimi bilen var mı?
DÜZENLEME:
uçuş öncesi hatasının baskı:
: başkası sorun yaşamaya devam ederse, bana benim cevap ulaşmak yardımcı olan aşağıdaki yayınlar okuma tavsiye @Aravind Üzgünüm Sugg'la ilgili çözümü gerçekten anlayamıyorum Tahmin edeyim çünkü SO bazı sebeplerden alıntıları ikiye katlıyor. Bir şekilde başka bir şekilde yazabilir misiniz? –
Tüm etki alanlarına ve yöntemlere 'new EnableCorsAttribute (" * "," * "," * ");' 'Bunu kullanmanın en iyi yolu, ICorsPolicyProvider kullanarak kendi özel özniteliğinizi oluşturmak ve GetCorsPolicyAsync yöntemini uygulamaktır. – Paresh
@Paresh Ama kullanamıyorum * çünkü windows kimlik doğrulaması kullanıyorum ve uyumsuz. Ayrıca sadece bu üç URL'ye izin vermek istiyorum. –