Я создаю приложение Angular, которое прекрасно работает на моей машине для разработки.
Сейчас я пытаюсь установить его на производственный сервер Windows.
Для этого я установил apache, чтобы обслуживать это приложение, а также API службы отдыха, который входит в комплект.
Если я открою веб-браузер и сервер и использую свое приложение Angular через общедоступный IP-адрес (https), оно будет работать хорошо.
Если я делаю то же самое с другого компьютера, я могу попасть на первую страницу входа в систему, но когда я хочу войти, я получаю следующее сообщение об ошибке:
-> ОПЦИИ http://localhost:5001/users/authenticate net :: ERR_EMPTY_RESPONSE
Я пытаюсь настроить брандмауэр, но это не помогает, я читаю много тем, но не могу найти ответ.
Остальное API сделано в C #, функция настройки запуска выглядит так:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
Console.WriteLine("Hello Welcome to WebAPI service");
// global cors policy
app.UseCors(x => x
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
//.WithOrigins( "http://localhost:80" )
//.SetIsOriginAllowed( isOriginAllowed: _ => true )
.AllowCredentials());
app.UseAuthentication();
app.UseMvc();
}
Вызов API из Angular App выглядит следующим образом:
return this.http.post<any>(`${this.env.apiUrl}/users/authenticate`, { username, password })
.pipe(map(user => {
// login successful if there's a jwt token in the response
if (user && user.token) {
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('currentUser', JSON.stringify(user));
this.currentUserSubject.next(user);
}
return user;
}));
Файл env.js:
(function (window) {
window.__env = window.__env || {};
// API url
window.__env.apiUrl = 'http://localhost:5001';
// Whether or not to enable debug mode
// Setting this to false will disable console output
//window.__env.enableDebug = true;
}(this));