ฉันไม่แน่ใจว่าสิ่งที่ฉันหายไป แต่ดูเหมือนว่าไม่สามารถทำให้นโยบาย CORS ของฉันทำงานกับ. NET Core 3.1 และ Angular 8 ฝั่งไคลเอ็นต์
Startup.cs
:
public void ConfigureServices(IServiceCollection services)
{
// ...
// Add CORS policy
services.AddCors(options =>
{
options.AddPolicy("foo",
builder =>
{
// Not a permanent solution, but just trying to isolate the problem
builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
});
});
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
// Use the CORS policy
app.UseCors("foo");
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
ข้อความแสดงข้อผิดพลาดฝั่งไคลเอ็นต์:
Access to XMLHttpRequest at 'https://localhost:8082/api/auth/' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
UPDATE:
แม้ว่าฉันจะตั้งค่า CORS ไม่ถูกต้อง (และคำตอบที่ยอมรับได้ด้านล่างช่วยได้จริง) รากของปัญหาไม่เกี่ยวข้อง สำหรับบริบทเพิ่มเติมแอปทำงานได้ดีอย่างสมบูรณ์เมื่อเรียกใช้ API และแอปพลิเคชัน Angular โดยใช้ CLI - ฉันเพิ่งพบปัญหานี้หลังจากปรับใช้ทั้งสองไปยังเว็บเซิร์ฟเวอร์
ปัญหา"จริง"สิ้นสุดลงซึ่งเกี่ยวข้องกับการเชื่อมต่อ SQL ซึ่งฉันค้นพบหลังจากเพิ่มการบันทึกข้อผิดพลาดไฟล์แฟล็ตไปยัง API และรันการติดตาม SQL Server เพื่อค้นหาว่าแอปไม่สามารถเชื่อมต่อกับ SQL ได้เลย
โดยปกติฉันคาดหวังว่าสิ่งนี้จะส่งคืน 500 และฉันจะได้ตระหนักถึงปัญหาภายใน 10 วินาที - อย่างไรก็ตามการกำหนดค่าผิดพลาดของ CORS หมายถึง 500 ไม่เคยถูกส่งคืนจริงเพราะ CORS มิดเดิลแวร์ล้มเหลวก่อน นี่ช่างน่าผิดหวังอย่างมากที่จะพูดน้อยที่สุด! . อย่างไรก็ตามฉันต้องการที่จะเพิ่มที่นี่ในกรณีที่คนอื่นพบว่าตัวเองอยู่ในสถานการณ์เช่นนี้เพราะฉันเป็น "ไล่กระต่ายผิด" ถ้าคุณจะ หลังจากแก้ไขการกำหนดค่า CORS ฉันรู้ว่าปัญหาจริงไม่เกี่ยวข้องกับ CORS ทั้งหมด
TL; DR; - บางครั้ง "Non-CORS" ข้อผิดพลาดฝั่งเซิร์ฟเวอร์. NET สามารถส่งคืนเป็นข้อผิดพลาด CORS ได้หากนโยบาย CORS ไม่ได้ตั้งค่าอย่างถูกต้อง
อ้างอิง:
https://medium.com/swlh/cors-headers-with-dot-net-core-3-5c9dfc664785
app.UseCors("foo");
ก่อนapp.UseHttpsRedirection();