F# 如何使用suave将http重定向到https,在f中#
如何使用Suave将连接从http重定向到https 当时我发现:F# 如何使用suave将http重定向到https,在f中#,f#,suave,F#,Suave,如何使用Suave将连接从http重定向到https 当时我发现: let redirectToSsl : WebPart = context(fun c -> match c.request.header "x-forwarded-proto" with | Choice1Of2 "http" -> let uriBuilder = new UriBuilder(
let redirectToSsl : WebPart =
context(fun c ->
match c.request.header "x-forwarded-proto" with
| Choice1Of2 "http" ->
let uriBuilder = new UriBuilder(
Scheme = Uri.UriSchemeHttps,
Path = c.request.path,
Host = c.request.host)
Redirection.redirect (uriBuilder.Uri.ToString())
| _ -> fun _ ->async { return None })
但我真的不确定这在管道中的位置?我想改变两件事:
- 检查实际的协议。我认为
仅用于代理,但我不确定x-forwarded-proto
- 要使其适合您的管道,请在访问安全时接受要调用的Web部件
let redirectToSsl allow : WebPart =
context (fun c ->
if c.request.binding.scheme.secure then
allow
else
let uriBuilder =
new UriBuilder(
Scheme = Uri.UriSchemeHttps,
Path = c.request.path,
Host = c.request.host)
Redirection.redirect (uriBuilder.Uri.ToString()))
let app = redirectToSsl Files.browseHome // allow browsing under SSL only
用法如下所示:
let redirectToSsl allow : WebPart =
context (fun c ->
if c.request.binding.scheme.secure then
allow
else
let uriBuilder =
new UriBuilder(
Scheme = Uri.UriSchemeHttps,
Path = c.request.path,
Host = c.request.host)
Redirection.redirect (uriBuilder.Uri.ToString()))
let app = redirectToSsl Files.browseHome // allow browsing under SSL only
警告:我还没有在实践中尝试过这一点,所以我可能忽略了其他问题