我有两个应用程序:
.NET Core 2.0中的WebAPI
.NET Core 2.0中的前端MVC,它使用JavaScript发送帖子请求。
由于某些原因,Firefox仅“接受”第一个请求,而由于CORS问题,其余请求被拒绝,同时Chrome的使用率更是达到50/50-一些请求通过并正确地从后端返回数据,但有些被阻止。 / p>
此外,虚拟机内部的所有内容都具有2x端口转发和2x反向代理
后端
主机:HOST_IP:55555转发到GUESTIP:80
前端
主机:HOST_IP:44444已转发到GUESTIP:44445
然后在vm nginx代理内部
端口80到:http://localhost:55659(后端应用程序)
将22222端口连接到http://localhost:63382(前端应用程序)
前端可以在浏览器中正确呈现,后端可以由邮递员访问并正确返回数据,有时请求可以在chrome中使用。
POST http://10.1.14.142:55555/test/test 400 (Bad Request)
vue-resource.js:1088 POST http://10.1.14.142:55555/test/test 400 (Bad Request)
:55555/test/test:1 POST http://10.1.14.142:55555/test/test 503 (Service Temporarily Unavailable)
test:1 Failed to load http://10.1.14.142:55555//test/test: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://10.1.14.142:44444' is therefore not allowed access. The response had HTTP status code 503.
Cross-Origin Read Blocking (CORB) blocked cross-origin response http://10.1.14.142:55555//test/test with MIME type text/html. See https://www.chromestatus.com/feature/5629709824032768 for more details.
vue-resource.js:1088 POST http://10.1.14.142:55555//test/test 400 (Bad Request)
如您所见,由于发送了空表单,一些请求已到达后端并返回BadRequest
这是我一直在尝试的所有内容:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options => options.AddPolicy("AllowAll",
p => p.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()));
jwt...
services
.AddMvc()
.AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<Startup>());
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, Persistance.AppContext context)
{
app.UseDeveloperExceptionPage();
app.UseAuthentication();
app.UseCors("AllowAll");
app.UseMvc();
}
public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
jwt...
services
.AddMvc()
.AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<Startup>());
}
with:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, Persistance.AppContext context)
{
app.UseDeveloperExceptionPage();
app.UseAuthentication();
app.UseCors(builder => builder
.WithOrigins("http://10.1.14.142:44444"));
app.UseMvc();
}
or
public void Configure(IApplicationBuilder app, IHostingEnvironment env, Persistance.AppContext context)
{
app.UseDeveloperExceptionPage();
app.UseAuthentication();
app.UseCors(builder => builder
.WithOrigins("http://10.1.14.142:44444")
.AllowAnyHeader()
.AllowAnyMethod());
app.UseMvc();
}
or
public void Configure(IApplicationBuilder app, IHostingEnvironment env, Persistance.AppContext context)
{
app.UseDeveloperExceptionPage();
app.UseAuthentication();
app.UseCors(builder => builder
.WithOrigins("http://10.1.14.142:44444")
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod());
app.UseMvc();
}
有什么想法吗?预先感谢。
答案 0 :(得分:0)
解决方案:
禁用NGINX的速率限制器。
该死,我浪费了很多时间。我希望这是一个实际的解决方案,并且不会在接下来的1小时内再次出现...
这是startup.cs:
app.UseCors
(
builder => builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
);