Этот запрос от приложения Blazor WebAssembly, обслуживаемого Nginx, возвращает ошибку 405 «Метод не разрешен» (POST):
http://localhost: 4000 / chatHub /gotiate ?gotiateVersion = 1
Исследование Я обнаружил, что когда Nginx работает в качестве обратного прокси-сервера, необходимо обновить заголовки, но это не мой случай. Nginx здесь работает как веб-сервер. Вот мой nginx .conf:
events {}
http {
include mime.types;
types {
application/wasm wasm;
}
server {
listen 80;
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html =404;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE, PATCH';
add_header 'Access-Control-Allow-Headers' 'Content-Type, X-Requested-With';
add_header 'Access-Control-Allow-Credentials' 'true';
}
}
}
Вот мой back-end api Конфигурация запуска:
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSignalR();
services.AddCors(options =>
{
options.AddDefaultPolicy(builder =>
{
builder.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod()
.SetIsOriginAllowed(host => true);
});
});
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseCors();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<ChatHub>("/chatHub");
endpoints.MapControllers();
});
}
Что мне здесь не хватает? Нужно ли сопоставлять указанное c расположение "/ chatHub" в nginx .conf для какой-либо работы с webSockets?
Ps .: Я использую Docker контейнеры (docker -compose) .