בשל המעבר לדוטנט 7 אני נתקל בשגיאת CORS עקשנית. עד היום בדוטנט 3 אם הייתי רוצה לאפשר פניות מכיוון הלקוח הייתי מגדיר כך:
app.UseCors(x => x
.AllowAnyMethod()
.AllowAnyHeader()
.SetIsOriginAllowed(origin => true) // allow any origin
בדוטנט 7 ע"פ מייקרוסופט הדרך אמורה להיות כך:
var MyAllowSpecificOrigins = "_myAllowSpecificOrigins";
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddCors(options =>
{
var MyAllowSpecificOrigins = "_MyAllowSubdomainPolicy";
options.AddPolicy(name: MyAllowSpecificOrigins,
policy =>
{
policy.WithOrigins("http://localhost:4200")
.SetIsOriginAllowedToAllowWildcardSubdomains();
});
});
...
app.UseCors(MyAllowSpecificOrigins);
app.UseAuthorization();
וזה כדי לאשר לכה"פ לדפדפן עם אנגולר על localhost לגשת לשרת.
ע"פ המוצע כאן ניסיתי לשנות לזה:
builder.Services.AddCors(options =>
{
options.AddPolicy(myAllowSpecificOrigins, policy => {
policy.WithOrigins("https://localhost:4200", "http://localhost:4200");
policy.WithHeaders("*");
});
});
לא עזר.
בנוסף ניסיתי להוסיף בקונטרולר את שורת הקודה הבאה
HttpContext.Response.Headers.Add("Access-Control-Allow-Origin", "http://localhost:4200");
לא עזר.
כך נראה האנגולר שקורא לדוטנט :
getNumberFromDb(): Observable<number> {
let httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json;charset=utf-8',
Authorization: "",
}),
};
return this.httpClient.get<number>(this.getNumberFromDbURL, httpOptions);
}
איך אפשר לאפשר לכל דפדפן לפנות לדוטנט בלי לקבל את השגיאה הנ"ל?
המון תודה!
עריכה מאוחרת : הפיתרון הוא
- למחוק את ה-headers מהאנגולר
- למחוק את המידלוור
app.UseHttpsRedirection();