2017-06-01 5 views
2

私はすべてのAPIとWeb HTTPリクエストをSwift PerfectのHTTPSにリダイレクトしようとしています。 AWSにコードをデプロイしました。私がグーグルでは、私が使っているELBを使っているだけです。コード内のhttpsポートにリダイレクトするための回避策はありますか?ELBなしですべてのHTTPをHTTPSにリダイレクト

+0

です。少なくとも理由は投票前に満足していただろう。 – user1728071

答えて

2

多くの研究と人の指導の後、私は解決策を見つけました。他のリダイレクトについてパーフェクト

にこれに時間を費やす必要がないようにそれを投稿HTTPSへのすべてのHTTPは、ここではそれが否決された理由を私は知らないソリューション

let mainDomain = "www.<your domain>.com(or anything)" 

var nonSecureRoutes = Routes() 
nonSecureRoutes.add(method: .get, uri: "/**", handler: { 
    request, response in 
    response.setHeader(.location, value: "https://\(request.header(.host) ?? mainDomain)\(request.uri)") 
     .completed(status: .movedPermanently) 
}) 

let certPath = "/cert/path.pem" 
let keyPath = "key/path.pem" 

var certVerifyMode = OpenSSLVerifyMode() 
certVerifyMode = .sslVerifyPeer 

do { 
    try HTTPServer.launch(
     .server(name: mainDomain, port: 80, routes: nonSecureRoutes), 
     .secureServer(TLSConfiguration(certPath: certPath, keyPath: keyPath, certVerifyMode: certVerifyMode), name: mainDomain, port: 443, routes: routes)) 

} catch PerfectError.networkError(let err, let msg) { 
    print("Network error thrown: \(err) \(msg)") 
} 
関連する問題