2017-08-13 13 views
5

ile uyumlu değil Anlık 4 uygulamasını farklı bağlantı noktalarıyla locahost üzerinde test ettiğim Asp core web api ile kullanıyorum. WebApi'm Windows Kimlik Doğrulaması gerektiriyor (oturum açma kullanıcı adı almak gerekiyor). GET işini kullanan tüm aramalar maalesef, POST'un çalışmasını alamıyorum.Asp.net Core CORS, GET ile çalışır, ancak POST

XMLHttpRequest http://localhost:495/api//upload yükleyemiyor:

 public void ConfigureServices(IServiceCollection services) 
    { 
     // Add framework services. 
     services.AddApplicationInsightsTelemetry(Configuration); 
     services.AddDbContext<CatalogContext>(options => 
      options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); 
     services.AddCors(options => 
     { 
      options.AddPolicy("AllowAll", builder => 
      { 
       builder.AllowAnyOrigin() 
        .AllowAnyHeader() 
        .AllowAnyMethod() 
        .AllowCredentials(); 
      }); 

     }); 
     services.AddMvc(); 
    } 

Ve açısal 4 istemci dosyasını

fileChange(event) { 
let fileList: FileList = event.target.files; 
if (fileList.length > 0) { 
    let file: File = fileList[0]; 
    let formData: FormData = new FormData(); 
    formData.append('uploadFile', file, file.name); 
    let headers = new Headers(); 
    /** No need to include Content-Type in Angular 4 */ 
    headers.append('Content-Type', 'multipart/form-data'); 
    headers.append('Accept', 'application/json'); 

    let options = new RequestOptions({ headers: headers, withCredentials: true }); 
    this.http.post("http://localhost:495/api//upload",formData, options) 
    .map(res => res.json()) 
    .catch(error => Observable.throw(error)) 
    .subscribe(
    data => console.log('success'), 
    error => console.log(error) 
    ) 
} 

My hata sonrası çalışıyor: Ben CORS için WebAPI kurulum var. İstenen kaynakta 'Erişim-Kontrol-İzin-Kökeni' başlığı yok. Bu nedenle 'http://localhost:4200' kökeni erişimine izin verilmiyor. Yanıt HTTP durum kodunu 500.

Ve Tepki kafa

İçerik-Uzunluk: 0 Tarihi: Sun, 2017 13 Ağustos 13:13:09 GMT Kalıcı-Auth: true Sunucu: Kestrel X Destekli-By: ASP.NET X-Kaynak Kodlarını: = UTF-8 B QzpcU291cmNlIENvZGVcUGFydG5lcnNoaXBDYXRhbG9nXFBhcnRuZXJzaGlwQ2F0YWxvZ1xQYXJ0bmVyc2hpcENhdGFsb2cuV2ViQXBpXGFwaVx1cGxvYWQ = =

Herhangi bir yardım mutluluk duyacağız???!

services.AddCors(options => 
     { 
     options.AddPolicy("CorsPolicy", 
      builder => 
      builder.AllowAnyOrigin() 
      .AllowAnyMethod() 
      .WithExposedHeaders("content-disposition") 
      .AllowAnyHeader() 
      .AllowCredentials() 
      .SetPreflightMaxAge(TimeSpan.FromSeconds(3600))); 
     }); 

Bildirimi AllowCredentials():

+0

kontrol http://enable-cors.org:

Ayrıca Startup dosyada, Configure yöntemi gerekir. Korsanlar ekleme şeklinize benzemiyor. Http isteği için krom ağ sekmesini kontrol edin. İstek ve cevap detaylarını görmek için istek üzerine ayrı ayrı tıklayın. Uygulamanızı çağırmak yerine postacı veya gelişmiş dinlenme gibi keman veya krom uzantılarla kontrol edin. Ayrıca, bireysel sınıf, yöntem veya web.config dosyasında ayrı ayrı cor'ları etkinleştirmeyi deneyebilirsiniz. – Amit

+2

Lütfen istisna kutunuzu/mesajınızı gönderin. ASP.NET Çekirdeğinde bir istisna gerçekleştiğinde, istisna middleware ** üstbilgileri ** temizleyecektir, böylece CORS başlıkları kaybolur. İstisna nedenine bakın ve istisnayı çözün, sonra işe yaramaz, istisna olduğunda Http kodu 500 döndürülür – Tseng

+0

'UserCors'' 'Configure' yönteminde herhangi bir' UseMvc' çağrısından önce olduğunu onaylayabilir misiniz? – regnauld

cevap

0

Böyle bir şey lazım.

app.UseCors("CorsPolicy"); 
+0

Evet, app.UseCors ("AllowAll") var ve preflight eklemek de işe yaramadı. –