angular - 即使在设置 CORS 后,请求的资源上也没有“Access-Control-Allow-Origin”标头
问题描述
我受够了 .NET Core Web API 应用程序中的 CORS 错误。我已经做了所有我相信的设置。
这是我所做的
public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseCors(options =>
options.WithOrigins("http://localhost:4200/")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowAnyMethod());
//app.UseCors(builder => builder
// .AllowAnyOrigin()
// .AllowAnyMethod()
// .AllowAnyHeader()
// .AllowCredentials());
app.UseHttpsRedirection();
app.UseRouting();
}
即使现在它触发了以下错误
从源“ http://localhost:4200 ”访问“ https://localhost:44331/api/kip ”处的 XMLHttpRequest已被 CORS 策略阻止:没有“Access-Control-Allow-Origin”标头出现在请求的资源。
我从 Angular 调用它
这是我的调用脚本
getProjects() {
let url:string=this.isServer?"http://localhost:51071/webservice1.asmx":"https://localhost:44331";
console.info(url);
return this.client.get(url+'/api/kip', {
withCredentials: true,
responseType: 'json'
});
}
此外,我在返回之前在 API 的最后一行设置了一个断点,它到达那里没有任何问题。所以在调用 return 之后它会触发错误。我还单独尝试了返回 JSON 的 API。
这是我的控制器。
// GET: api/Kip
[HttpGet]
public KipProjects Get()
{
KipProjects proj = new KipProjects();
kip keyedin = new kip();
proj=keyedin.getKeyedinReport();
return proj;
}
解决方案
请参考文档:
注意:指定的 URL 不能包含尾部斜杠 (/)。如果 URL 以 / 结尾,则比较返回 false 并且不返回标头。
所以尝试options.WithOrigins("http://localhost:4200")
推荐阅读
- flutter - 为什么 Flutter 在 Visual Code 中无法识别我的抽象类?
- javascript - 如何逐步遍历多个数组然后聚合它们
- visual-studio-code - VSCode:Code Runner Extension,如何免除某些文件扩展名?
- json - Flutter - 如何从 List 创建 json 数组
? - c# - 如何制作禁用按钮来暂停脚本
- javascript - 用JS替换任何形式的每个实例或单词
- python - 带有 debugpy 的 vscode:缺少像 pdb 这样的递归模式?
- python - 是否可以从 Azure Python SDK 获取 ASC 位置?
- swift - SwiftUI:如何从轮子选择器导航到视图?
- python - Pygame 无法在 Pycharm 上运行 - “无法识别的选择器发送到实例”