2017-06-01 4 views
2

Ich versuche, alle meine APIs und Web-HTTP-Anfragen in Swift Perfect auf HTTPS umzuleiten. Ich habe Code in AWS implementiert. Als ich gegoogelt habe, benutze ich nur ELB, das ich nicht verwende. Gibt es eine Problemumgehung zum Umleiten auf HTTPS-Port in Code?Umleiten aller HTTP zu HTTPS ohne ELB

+0

Ich weiß nicht, warum es überstimmt wird. Zumindest wäre ein Grund befriedigend gewesen, bevor man abstimmte. – user1728071

Antwort

2

Nach viel Forschung und Menschenführung habe ich eine Lösung gefunden. Posting es so, dass andere müssen nicht Zeit dazu auf für Redirect alle HTTP auf HTTPS Perfekte

verbringen hier ist die Lösung

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)") 
} 
Verwandte Themen