use*_*823 3 asp.net-core-mvc asp.net-core angular
可能会多次询问此问题,但在线提供的解决方案对我不起作用.
在我们的项目中,我们使用WebMethod作为Asp.Net页面处理数据库,或者如果我这样说,我们有一个WebApi: -
HTTP://server/Pages/ApplicationData.aspx/GetApplicationLookups
现在我们有一个AspNet Core Angular Web应用程序,它调用了这个API
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)
}
Run Code Online (Sandbox Code Playgroud)
如果我使用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" });
});
}
Run Code Online (Sandbox Code Playgroud)
我的错误是: - 无法加载http://server/Pages/ApplicationData.aspx/GetApplicationLookups:对预检请求的响应未通过访问控制检查:请求中没有"Access-Control-Allow-Origin"标头资源.因此不允许来源' http:// localhost:60602 '访问.
任何想法,我可能会失踪.
谢谢
R. *_*rds 12
在向StartUp.cs添加内容时,顺序很重要.
在ConfigureServices功能,你需要有AddMvc通话后的AddCors呼叫.
services.AddCors(options =>
{
options.AddPolicy("AllowAll", p =>
{
p.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod();
});
});
...
services.AddMvc(); // must be after AddCors
Run Code Online (Sandbox Code Playgroud)
在Configure函数中,只需使用一个UseCors调用:
app.UseCors("AllowAll");
app.UseMvc();
Run Code Online (Sandbox Code Playgroud)
并且,确保在UseMvc通话之前调用它.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
4064 次 |
| 最近记录: |