我阅读了https://docs.microsoft.com/en-us/aspnet/core/security/enforcing-ssl?view=aspnetcore-2.2&tabs=visual-studio上的说明,这是我的Startup.cs
代码(这是样板生成的代码):
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// ...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseSpaStaticFiles();
app.UseMvc(...);
app.UseSpa(...);
}
}
我的launchSettings.json
:
{
"profiles": {
"MyProject": {
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
当我打开http://localhost:5000
时,我被重定向到https://localhost:5001
。但是,当我打开http://localhost:5001
时,只会得到一个错误页面。我想重定向到https
。我在文档中缺少什么吗?
答案 0 :(得分:1)
简单的答案是,你不能这样做。
当您尝试访问http://localhost:5001
时,会遇到两种情况,即试图以不同的“语言”进行通信(服务器希望TLS握手,但会收到一些垃圾-纯文本http请求)。
因此,服务器无法重定向您,因为没有双方都无法建立的通信渠道。
如果您尝试使用http连接到端口443,则某些浏览器足够聪明,可以切换到https,但这是客户端。不能在同一端口上托管https和http。