【发布时间】:2020-06-04 13:00:05
【问题描述】:
我必须使用位于一个来源但具有不同端口的应用程序 一是UI,二是API 当我从“邮递员”或浏览器发送请求时,响应代码为 200,一切正常 但是,当我从浏览器的 UI 应用程序发送请求 throw ajax 时,由于 Cors,我收到失败的请求 enter image description here
如果需要,在 Startup 我有 Cors 政策并使用它。这是 ConfigureServices 方法
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"),
x => x.MigrationsAssembly("CRM.API")));
services.AddCors(options =>
{
options.AddPolicy("AllowAll",
builder =>
{
builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
//.AllowCredentials();
});
});
services.AddHangfire(x => x.UseSqlServerStorage(Configuration.GetConnectionString("DefaultConnection")));
services.AddScoped<IEmailBirthdayManager, EmailBirthdayManager>();
services.AddSingleton<IAccessManager, AccessManager>();
services.AddControllers().AddNewtonsoftJson(options =>
options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);
//services.AddMvc().AddNewtonsoftJson(options =>
// options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "CRM.API", Version = "v1" });
c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
});
}
有配置方法
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});
// app.UseMiddleware<AuthorizationMiddleware>();
app.UseHangfireDashboard("/hangfire", new DashboardOptions
{
Authorization = new[] { new HangfireDashboardAuthorizationFilter()}
});
app.UseHangfireServer();
HangfireJobScheduler.ScheduleReccuringJobs();
app.UseStaticFiles();
app.UseHttpsRedirection();
app.UseRouting();
app.UseCors("AllowAll");
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Departments}/{action=GetDepartments}/{id?}");
});
}
还有对api的ajax请求
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
$.ajax({
url: `https://p-host-crm-2.hostco.ru:1337/api/users/getUserByLogin/gorbunov`,
async: false,
success: function (data) {
console.log("Data Loaded: ");
console.log(data);
}
});
我还尝试在我的方法和控制器中使用[EnableCors("AllowAll")]
尝试使用AddDefaultPolicy" code and "app.UseCors()
尝试使用SetIsOriginAllowed(origin => true)
如果你问我使用什么网络服务器,我会回答:IIS 在 IIS 的设置中我没有找到任何东西
互联网上的任何建议和解决方案都没有帮助我
等待您的回答!
【问题讨论】:
-
尝试在configure方法末尾添加app.UseMvc()
-
响应的 HTTP 状态码是什么?您可以使用浏览器开发工具中的网络窗格进行检查。是 4xx 还是 5xx 错误而不是 200 OK 成功响应?
标签: asp.net-web-api .net-core cors startup .net-core-3.1