gpt4 book ai didi

angular - ASP NET CORE - 请求的资源上存在 ANGULAR NO 'Access-Control-Allow-Origin' header

转载 作者:太空狗 更新时间:2023-10-29 18:04:34 29 4
gpt4 key购买 nike

这个问题可能会被问很多次,但网上提供的解决方案对我来说并不适用。

在我们的项目中,我们有一个带有处理数据库的 WebMethod 的 Asp.Net 页面,或者如果我这样说,我们有一个 WebApi 作为:-

http://server/Pages/ApplicationData.aspx/GetApplicationLookups

现在我们有一个调用该 API 的 AspNet Core Angular Web 应用程序

postgetGetApplicationLookups(url: string) {
var headers = new Headers();
headers.set('Accept', 'application/json; charset=utf-8');
headers.set('content-Type', 'application/json; charset=utf-8');
let data = {};
debugger;
return this.http.post(
url,
data,
{ headers: headers }
)
.map(this.handleSuccess)
.catch(this.handleError)
}

我收到以下错误:- ]

如果我使用 POSTMAN,这个 POST 调用工作正常:-

我用以下代码修改了我的 Startup.cs,但我仍然遇到同样的错误。

    public Startup(IConfiguration configuration)
{
Configuration = configuration;
}

public IConfiguration Configuration { get; }

public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options => options.AddPolicy("AllowAll", p => p.AllowAnyOrigin() //Fix API ISSUE
.AllowAnyMethod() //Fix API ISSUE
.AllowAnyHeader())); //Fix API ISSUE


services.AddMvc();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
{
HotModuleReplacement = true
});
}
else
{
app.UseExceptionHandler("/Home/Error");
}

app.UseStaticFiles();

app.UseCors("AllowAll");

app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");

routes.MapSpaFallbackRoute(
name: "spa-fallback",
defaults: new { controller = "Home", action = "Index" });
});
}

我的错误是:

Failed to load http://server/Pages/ApplicationData.aspx/GetApplicationLookups: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:60602' is therefore not allowed access.

关于我可能遗漏的任何想法。

谢谢

最佳答案

StartUp.cs 添加东西时顺序很重要。

ConfigureServices 函数中,您需要在 AddCors 调用之后 调用 AddMvc

services.AddCors(options =>
{
options.AddPolicy("AllowAll", p =>
{
p.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod();
});
});
...
services.AddMvc(); // must be after AddCors

Configure 函数中,只需使用一个UseCors 调用:

app.UseCors("AllowAll");
app.UseMvc();

并且,确保它也在 UseMvc 调用之前被调用。

关于angular - ASP NET CORE - 请求的资源上存在 ANGULAR NO 'Access-Control-Allow-Origin' header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46899952/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com