Ya, saya memiliki artikel yang tak terhitung jumlahnya dan mengatur ulang menambahkan app.UserCors dan saran lainnya tetapi saya masih buntu.
Menggunakan Visual Studio WebAPI Core 2 dengan front end web Angular 2.
Menggunakan otentikasi Windows di server jauh menggunakan IIS 8.5 (sebenarnya ini juga tidak berfungsi secara lokal).
Konfigurasi permulaan WebAPI:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<SomeContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SomeDB")));
//////// ********************
//////// Setup CORS
//////// ********************
var corsBuilder = new CorsPolicyBuilder();
corsBuilder.AllowAnyHeader();
corsBuilder.AllowAnyMethod();
corsBuilder.WithOrigins("*");
corsBuilder.AllowCredentials();
services.AddCors(options =>
{
options.AddPolicy("AllowAll", corsBuilder.Build());
});
services.AddMvc();
...
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseCors("AllowAll"); //<===
app.UseMvc();
...
Saat saya menjalankan WebAPI secara lokal, atau menerapkannya ke server jarak jauh, front end Angular 4 saya memberi saya:
Untuk panggilan ke pengontrol WebAPI - 401 (Tidak Sah) (bahkan pada pengontrol yang tidak memiliki [Authorize()]
yang disetel.
Saat saya mencoba menggunakan aplikasi Angular lokal saya untuk mengakses WebAPI jarak jauh:
Tidak ada header 'Access-Control-Allow-Origin' pada sumber daya yang diminta. Oleh karena itu, asal 'http://localhost:62482' tidak diizinkan untuk diakses. Responsnya memiliki kode status HTTP 401.
Saya telah mencoba mengatur ulang urutan penambahan layanan di startup.
Saya telah menambahkan header respons secara manual di IIS8.5 (header tersebut ditimpa setiap kali saya menerapkan kode baru).
Saya telah menghapus semua barang CORS sepenuhnya dari aplikasi WebAPI.
Saya BERSUMPAH ini semua berhasil pada satu waktu. Tidak yakin apa yang berubah.
Saya semua berjalan dengan baik ketika saya menerapkan aplikasi WebAPI Core 2 dan aplikasi web Angular ke server jarak jauh karena asal-usulnya sama, tetapi hal itu membuat proses debug lokal menjadi tidak mungkin.
*** Kode REPO sudut per permintaan:
import { Injectable, Inject } from '@angular/core';
import { Http } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { DocumentModel } from '../models/document.model';
import 'rxjs/add/observable/from';
import 'rxjs/add/operator/map';
import { map } from 'rxjs/operators/map';
import { IRepository } from './IRepository';
declare var API_URL: string;
@Injectable()
export class DocumentRepository implements IRepository<DocumentModel, number> {
GetByDocument(key: any): Observable<DocumentModel[]> {
throw new Error("Method not implemented.");
}
private httpService: Http;
private apiRootUrl: string;
constructor(http: Http) {
this.httpService = http;
this.apiRootUrl = API_URL;
}
Create(Model: DocumentModel): Observable<any> {
throw new Error("Method not implemented.");
}
Find(key: any): Observable<DocumentModel[]> {
return this.httpService.get(this.apiRootUrl +'documents/mine').map(result => result.json());
}
Get(id: any): Observable<DocumentModel> {
return this.httpService.get(this.apiRootUrl +'documents/' + id).map(result => result.json());
}
}
app.UseCors(builder => builder.WithOrigins("http://localhost") .AllowAnyHeader() );
dan memposting pengaturan sudut Anda juga ... @ user3637002 - person Vaibhav Kumar Goyal   schedule 27.08.2018WithOrigins("*")
menjadiAllowAnyOrigin
. Dan coba tambahkan ke pengontrol Anda secara manual untuk mengujinya dengan atribut[EnableCors("AllowAll")]
- person penleychan   schedule 27.08.2018