2016-10-05 5 views
0

私はGCDWebServerクラスで遊んでいます(それは素晴らしいです!)リモートIPによって許可された接続を制限することが可能かどうか疑問に思っていました。 IPのは異なっているが、それ以外の場合は、で終わるとき、それは禁断の403を送信し、私は意味、私が動作する上で期待したが、それはイマイチGCDWebServerの許可されたIPへの接続を制限する方法

server.addDefaultHandlerForMethod("GET", requestClass: GCDWebServerRequest.self, processBlock: {request in 

    let remote = request.remoteAddressString.substringToIndex(request.remoteAddressString.lastIndexOf(":")!) 
    let local = request.localAddressString.substringToIndex(request.localAddressString.lastIndexOf(":")!) 

    print("\(remote) vs \(local)") 
    if remote == local { 
     return nil 
    } 

    //Forbidden 
    return GCDWebServerResponse(statusCode: 403); 

}) 

[DEBUG] Connection aborted with status code 500 on socket 13

は、誰もがこれで私を助けることができますか?

P.S. doenst仕事も次

server.addDefaultHandlerForMethod("GET", 
             requestClass: GCDWebServerRequest.self, 
             processBlock: {request in 

    print(request.remoteAddressString) 
    print(request.localAddressString) 

    let remote = request.remoteAddressString.substringToIndex(request.remoteAddressString.lastIndexOf(":")!) 
    let local = request.localAddressString.substringToIndex(request.localAddressString.lastIndexOf(":")!) 

    print("\(remote) vs \(local)") 
    if remote == local { 
     return GCDWebServerResponse(statusCode: 200) 
    } 
    //Forbidden 
    return GCDWebServerResponse(statusCode: 403); 
}) 

答えて

0

GCDWebServerProcessBlockためGCDWebServer.hを参照してください:

ブロックでエラーにGCDWebServerResponseかnilを返す必要があり、クライアントに返さ500 HTTPステータスコードになりますました。

+0

私は成功する必要があります(たとえば、有効なIP)は、 'nil'を返さないと言っていますか? 'GCDWebServerResponse(statusCode:200)'? –

+0

はい、応答を返す必要があります。 nilを返すと、500エラーレスポンスになります。これはあなたが望むものではありません。 – Pol

+0

私は示唆しましたが、画面に何も表示されません。この 'server.addDefaultHandlerForMethod'を削除すると、ページは読み込まれません。それから、どんなIPでも動作します:( –

関連する問題