【发布时间】:2020-05-22 01:11:58
【问题描述】:
我在 .net 核心中有以下 API 代码
public void ConfigureServices(IServiceCollection services)
{
..............
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder
.AllowAnyMethod()
.AllowAnyHeader()
.WithOrigins("https://domain.com.xx")
.AllowCredentials()
);
});
services.AddControllers();
services.AddMvc().AddMvcOptions(x=>x.EnableEndpointRouting = false);
}
我的配置方法为
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
//app.UseHsts();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseCors("CorsPolicy");
app.UseMvc();
}
我得到一个 从源“https:domain.com.xx”访问 XMLHttpRequest 在“https://apiservername/api/mycall”已由 CORS 策略计时:不存在“Access-Control-Allow-Origin”标头在请求的资源上。
客户端在 Angular 7 中,我调用的方法是 POST 方法。我一直使用http。在我正在添加的拦截器的客户端
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
............
....
url: request.url.replace('http://','https://')
}
想知道我是否在这里遗漏了什么。客户端站点(角度)和 API 端(.NET Core ASP 3.1)都设置为 https。 ---已编辑-- 我启用了异常处理,之后我从事件查看器中得到了以下错误。
System.InvalidOperationException: IDX20803: Unable to obtain configuration from: 'https://login.microsoftonline.com/common/.well-known/openid-configuration'.
---> System.IO.IOException: IDX20804: Unable to retrieve document from: 'https://login.microsoftonline.com/common/.well-known/openid-configuration'.
---> System.Net.Http.HttpRequestException: No connection could be made because the target machine actively refused it.
---> System.Net.Sockets.SocketException (10061): No connection could be made because the target machine actively refused it.
at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
这是否意味着问题在于令牌的身份验证?我正在使用 Azure AD 验证登录,然后验证是否使用 asp .net 核心 WebAPI。
【问题讨论】:
-
在配置方法中,你能把 app.UseCors("CorsPolicy") 代码移到 app.UseAuthentication() 上面吗?
-
我推了它,但结果是一样的。我可以在 Fiddler 中看到包含详细信息的包,但我仍然遇到同样的问题
-
响应的 HTTP 状态码是什么?您可以使用浏览器开发工具中的网络窗格进行检查。是 4xx 还是 5xx 错误而不是 200 OK 成功响应?
-
使用 '.AllowAnyOrigin()' 是否可以正常工作
标签: c# angular typescript asp.net-core single-page-application