我在 dotnet core 中遇到了一些有关 CORS/HttpClient 的问题。首先,我的应用程序的结构如下:
Webapp -> Microservice-Gateway -> multiple Microservices
Run Code Online (Sandbox Code Playgroud)
如果我从我的 Web 应用程序进行 Ajax 调用
$.ajax({
url: "https://[actual gateway Url]/customer/" + customerId,
type: "GET",
timeout: 60000,
crossDomain: true,
dataType: "json",
success: data => {
//...
}
});
Run Code Online (Sandbox Code Playgroud)
到网关服务器时,我有时会收到以下错误消息:
请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问来源“ http://localhost:50595 ”。响应的 HTTP 状态代码为 500。
然而,如果我调试,我的网关在内部会抛出此错误:
System.Net.Http.HttpRequestException:发送请求时发生错误。---> System.Net.Http.WinHttpException:操作超时
我尝试通过在网关和每个微服务中添加以下代码来解决第一个错误:
public void ConfigureServices(IServiceCollection services) {
var corsBuilder = new CorsPolicyBuilder();
corsBuilder.AllowAnyHeader();
corsBuilder.AllowAnyMethod();
corsBuilder.AllowAnyOrigin();
corsBuilder.AllowCredentials();
services.AddCors(options => {
options.AddPolicy("SiteCorsPolicy", corsBuilder.Build());
});
//..
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { …Run Code Online (Sandbox Code Playgroud)