1 回答
TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
默認(rèn)情況下,中間件管道會(huì)運(yùn)行,而不管使用什么端點(diǎn)來(lái)訪問(wèn)您的應(yīng)用程序。因此,如果您只是這樣做app.UseHttpsRedirection(),那么 HTTPS 重定向中間件將為您的所有公共端點(diǎn)運(yùn)行。
當(dāng)僅在特定條件下添加中間件時(shí),有一種機(jī)制UseWhen允許您設(shè)置條件中間件管道。這看起來(lái)像這樣:
app.UseWhen(context => context.Request.Port == 888, httpApp =>
{
httpApp.UseHttpsRedirection();
});
但是,在您的情況下,這無(wú)濟(jì)于事:?jiǎn)栴}是在單個(gè)端口上,您只能托管一個(gè)東西。因此,如果您想在端口 443 上使用 HTTPS 托管您的應(yīng)用程序,那么它將只接受 HTTPS。如果您嘗試使用不安全的 HTTP 進(jìn)行連接,那么它將失敗,因?yàn)樗鼰o(wú)法執(zhí)行必要的握手。
你想在這里做的是在同一個(gè)端口上同時(shí)托管 HTTP 和 HTTPS,但這根本行不通,因?yàn)闆](méi)有一種機(jī)制可以在客戶端實(shí)際已經(jīng)嘗試建立之前確定客戶端是否想要執(zhí)行 HTTP 或 HTTPS任何一個(gè)。
所以不,您不能將端口 443 上的 HTTP 重定向到端口 443 上的 HTTPS。
- 1 回答
- 0 關(guān)注
- 157 瀏覽
添加回答
舉報(bào)
