我在同一台服务器上部署了两个项目。其中一个是角度项目,另一个是.net CORE中的角度项目调用的API。 在本地,我没有这个问题,但是在服务器上,每次我调用API时,都会在浏览器控制台中收到此错误消息:
从原点>'http://myIPAdress:81/Configuration/CODE_CLIENT'开始对>'http://myIPAdress'处的XMLHttpRequest的访问已被CORS策略阻止:在所请求的资源上没有'Access-Control-> Allow-Origin'标头
我推断出问题来自.NET Core项目。我已经在StackoverFlow上尝试了建议的解决方案,但没有成功。 这是我在.net Core方面的代码:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new
CorsAuthorizationFilterFactory("AllowSpecificOrigin"));
});
services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigin",
builder => builder.WithOrigins("http://localhost:80").AllowAnyHeader()
.AllowAnyMethod());
});
services.AddMvc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole();
loggerFactory.AddDebug(LogLevel.Information);
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
// Shows UseCors with named policy.
app.UseCors("AllowSpecificOrigin");
app.UseStaticFiles();
app.UseAuthentication();
app.UseMvcWithDefaultRoute();
}
在Angular端,我这样调用我的API:
getConf(code : string){
var url = "http://MyIPAdress/Configuration";
return this.http.get<any>(url +'/'+ code)
}
在本地,我通过API访问数据,但不在服务器上访问,有人知道为什么吗?
对不起,我的英语和我的代码我开始编程
编辑:我在服务器的IIS中添加了HTTP响应:Access-Control-Allow-Origin。现在我没有相同的错误,但是这个错误:
响应中“ Access-Control-Allow-Credentials”标头的值是“>”,当请求的凭据模式为“ include”时,该值必须为“ true”。 XMLHttpRequest发起的请求的>凭据模式由> withCredentials属性控制。
答案 0 :(得分:0)
在builder => builder.WithOrigins("http://localhost:80").AllowAnyHeader()
中,也与http://localhost:80
一起添加服务器IP地址
赞:
builder.WithOrigins("http://localhost:80","http://serverIPAddress.com");
答案 1 :(得分:0)
尝试不提供以下任何政策:
BETWEEN '24-JUN-19' AND '24-AUG-19'
答案 2 :(得分:0)
要解决初始错误,请移动'app.UseCors(“ AllowSpecificOrigin”);'到'app.UseMvcWithDefaultRoute();'之前以便读取
app.UseCors("AllowSpecificOrigin");
app.UseMvcWithDefaultRoute();
此后通过添加AllowCredentials();
解决了收到的错误,因此CORS条目应为
services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigin",
builder => builder.WithOrigins("http://localhost:80").AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()
);
});