2017-03-15 20 views
10

Evet, ne düşündüğünüzü biliyorum - yine başka bir CORS sorusu, ama bu sefer güldüm.CORS: kimlik bilgisi modu 'içerir'

Yani başlamak için, gerçek hata iletisi:

XMLHttpRequest cannot load http://localhost/Foo.API/token . The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. Origin ' http://localhost:5000 ' is therefore not allowed access. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.

emin değilim kimlik modunda kasıt 'include' nedir? Ben postacı isteği gerçekleştirdiğinizde

Yani, yaşamaya hayır böyle hatası:

enter image description here

Ama angularjs web uygulaması aracılığıyla aynı talebi eriştiklerinde, bu hata ile stumped. İşte benim angualrjs isteğim/cevabım.

Kemancı İstek ve Yanıt: Eğer yanıt OK 200 olduğunu göreceksiniz, ama yine de CORS hatası aldıkça aşağıdaki görüntü API

web ön ucundan isteği ve yanıtı göstermektedir

doğru şeyi yapıyormuşum gibi

Fiddler

bunu internetten okudum diğer yayınların dayanarak, hatası anlayamıyorum, bu yüzden görünüyor. kullanılan

Yöntem 1:: Kullanılan

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     EnableCrossSiteRequests(config); 
    } 

    private static void EnableCrossSiteRequests(HttpConfiguration config) 
    { 
     var cors = new EnableCorsAttribute("*", "*", "*") 
     { 
      SupportsCredentials = true 
     }; 
     config.EnableCors(cors); 
    } 
} 

Yöntem 2 - Referans amaçlı API

enter image description here

CORS Uygulama: Son olarak, burada ben angualrjs içinde kullanmak kodu (giriş fabrika) 'dir :

 public void Configuration(IAppBuilder app) 
     { 
      HttpConfiguration config = new HttpConfiguration(); 

      ConfigureOAuth(app); 

      WebApiConfig.Register(config); 
      app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll); 
      app.UseWebApi(config); 

     } 

Şimdiden çok teşekkürler!

withCredentials true olarak ayarlanır

, istekle birlikte kimlik bilgilerini veya çerezleri göndermeye çalışıyor:

+0

güzel resimler söz konusu olduğunda, geçerli bir kökeni ile CORS isteklerine yanıt ya edebilir? Sorunuzu yanıtlamak için, kimlik doğrulamayı dahil ederseniz, erişim-kontrol-izin-menşe cevabı **, kaynak (tarayıcı sayfası) ana bilgisayar olmalıdır **, ** olamaz * * - yani sunucu tarafı CORS yanlış yapıyor - oh ve postacı çalışıyor çünkü çapraz kaynaklı bir istek değil –

+0

@JaromandaX, yanıt için teşekkürler. Resimler, isteklerin/yanıtların yanı sıra başlıkların geçtiğini de gösterir. Soruyu soruyorsunuz, açıkçası bunun amacını yerine getirmediğini belirtiyor ... –

+0

Yorumum, bilmeniz gereken her şey olmalı - resimleri görmeye gerek yok –

cevap

9

sorunun Açısal koddan kaynaklanıyor. Bu, başka bir kaynaktan potansiyel olarak kimlik doğrulaması yapılmış istekler yapmaya çalıştığı için, joker karaktere ("*") "Erişim-Kontrol-İzin-Menşei" başlığı olarak izin verilmez. Bu işlemi yapmak için "Erişim-Denetim-İzin-Kökeni" başlığında isteği yapan kökeni açıkça yanıtlamanız gerekir.

Doğrulanmış isteklerde bulunmak için izin vermek istediğiniz kökenleri açık bir şekilde beyaz listeye eklemenizi öneririm çünkü isteğin kökeni ile ilgili yanıt vermek, herhangi bir web sitesinin, kullanıcının söz konusu olması durumunda arka ucunuza doğrulanmış aramalar yapabilmesi anlamına gelir. geçerli oturum.

Bu şeyi this article içinde açıklarım. Bir süre önce yazdım.

Yani false withCredentials set ya da ne olduğu, bir orijin beyaz listesini uygulamak ve kimlik bilgileri

+1

Makaleniz için teşekkür ederiz, çok yararlı! –

+1

Makaleniz SÜPER !!! – ArmeniaH

İlgili konular