У меня есть приложения, которые расположены на одном источнике, но у них разные порты. Один - это пользовательский интерфейс, второй - API. Когда я отправляю запросы от «почтальона» или из браузера, код ответа - 200, и все в порядке, но когда я отправляю запрос выбросить ajax из моего приложения пользовательского интерфейса из браузера. Я получаю неудавшийся запрос из-за Cors , введите описание изображения здесь
Если это необходимо, при запуске я использую политику 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?}");
});
}
А также есть ajax Запрос к API
<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 я ничего не нашел
И любые предложения и решения от inte rnet мне не помогли
Ожидание за ваши ответы!