ใช่ ฉันมีบทความนับไม่ถ้วนและจัดเรียงแอปใหม่ UserCors และคำแนะนำอื่นๆ แต่ฉันยังคงติดอยู่
การใช้ Visual Studio WebAPI Core 2 กับส่วนหน้าของเว็บ Angular 2
การใช้การรับรองความถูกต้องของ Windows บนเซิร์ฟเวอร์ระยะไกลโดยใช้ IIS 8.5 (อันที่จริงสิ่งนี้ใช้ไม่ได้ในเครื่องเช่นกัน)
คอนฟิกการเริ่มต้น 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();
...
เมื่อฉันเรียกใช้ WebAPI ภายในเครื่องหรือปรับใช้กับเซิร์ฟเวอร์ระยะไกล ส่วนหน้า My Angular 4 จะให้ฉัน:
สำหรับการเรียกไปยังตัวควบคุม WebAPI - 401 (ไม่ได้รับอนุญาต) (แม้แต่บนตัวควบคุมที่ไม่มีการตั้งค่า [Authorize()]
ก็ตาม
เมื่อฉันพยายามใช้อินสแตนซ์ในเครื่องของแอป Angular เพื่อเข้าถึง WebAPI ระยะไกล:
ไม่มีส่วนหัว 'Access-Control-Allow-Origin' บนทรัพยากรที่ร้องขอ Origin 'http://localhost:62482' จึงไม่ได้รับอนุญาตให้เข้าถึง การตอบสนองมีรหัสสถานะ HTTP 401
ฉันได้ลองจัดลำดับการเพิ่มบริการใหม่เมื่อเริ่มต้นระบบแล้ว
ฉันได้เพิ่มส่วนหัวการตอบกลับใน IIS8.5 ด้วยตนเอง (จะถูกเขียนทับทุกครั้งที่ฉันปรับใช้โค้ดใหม่)
ฉันได้ลบเนื้อหา CORS ทั้งหมดออกจากแอป WebAPI แล้ว
ฉัน สาบาน ทั้งหมดนี้ได้ผลในคราวเดียว ไม่แน่ใจว่ามีอะไรเปลี่ยนแปลง
ฉันทำงานได้ดีเมื่อฉันปรับใช้ทั้งแอป WebAPI Core 2 และเว็บแอป Angular กับเซิร์ฟเวอร์ระยะไกลเนื่องจากต้นทางเหมือนกัน แต่นั่นทำให้การดีบักในเครื่องเป็นไปไม่ได้
*** รหัส REPO เชิงมุมต่อคำขอ:
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() );
และโพสต์การตั้งค่าเชิงมุมของคุณด้วย ... @ user3637002 - person Vaibhav Kumar Goyal   schedule 27.08.2018WithOrigins("*")
เป็นAllowAnyOrigin
และลองเพิ่มลงในคอนโทรลเลอร์ของคุณด้วยตนเองเพื่อทดสอบด้วยแอตทริบิวต์[EnableCors("AllowAll")]
- person penleychan   schedule 27.08.2018