Send a chunked HTTPS response from a Go server












2














The following the example works very nicely for HTTP: Send a chunked HTTP response from a Go server



As soon as I add TLS, I see that the responses are no longer chunked:



func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
flusher, ok := w.(http.Flusher)
if !ok {
panic("expected http.ResponseWriter to be an http.Flusher")
}
w.Header().Set("X-Content-Type-Options", "nosniff")
for i := 1; i <= 10; i++ {
fmt.Fprintf(w, "Chunk #%dn", i)
flusher.Flush() // Trigger "chunked" encoding and send a chunk...
time.Sleep(500 * time.Millisecond)
}
})

log.Print("Listening on localhost:8080")
log.Fatal(http.ListenAndServeTLS(":8080", "<CERT_FILE>", "<KEY_FILE>", nil))
}


Any ideas why this might be?










share|improve this question
























  • Can you post something that exhibits the non-chunked response? I've tried your code in my local machine and it works.
    – ssemilla
    Nov 12 at 9:45








  • 2




    you are using http/2 and that doesn't support chunks
    – Vorsprung
    Nov 12 at 10:18










  • Thanks for trying this @ssemilla. I'm executing my code from a docker container. I'll strip this back and see what happens.
    – Mike Eller
    Nov 12 at 10:21
















2














The following the example works very nicely for HTTP: Send a chunked HTTP response from a Go server



As soon as I add TLS, I see that the responses are no longer chunked:



func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
flusher, ok := w.(http.Flusher)
if !ok {
panic("expected http.ResponseWriter to be an http.Flusher")
}
w.Header().Set("X-Content-Type-Options", "nosniff")
for i := 1; i <= 10; i++ {
fmt.Fprintf(w, "Chunk #%dn", i)
flusher.Flush() // Trigger "chunked" encoding and send a chunk...
time.Sleep(500 * time.Millisecond)
}
})

log.Print("Listening on localhost:8080")
log.Fatal(http.ListenAndServeTLS(":8080", "<CERT_FILE>", "<KEY_FILE>", nil))
}


Any ideas why this might be?










share|improve this question
























  • Can you post something that exhibits the non-chunked response? I've tried your code in my local machine and it works.
    – ssemilla
    Nov 12 at 9:45








  • 2




    you are using http/2 and that doesn't support chunks
    – Vorsprung
    Nov 12 at 10:18










  • Thanks for trying this @ssemilla. I'm executing my code from a docker container. I'll strip this back and see what happens.
    – Mike Eller
    Nov 12 at 10:21














2












2








2


0





The following the example works very nicely for HTTP: Send a chunked HTTP response from a Go server



As soon as I add TLS, I see that the responses are no longer chunked:



func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
flusher, ok := w.(http.Flusher)
if !ok {
panic("expected http.ResponseWriter to be an http.Flusher")
}
w.Header().Set("X-Content-Type-Options", "nosniff")
for i := 1; i <= 10; i++ {
fmt.Fprintf(w, "Chunk #%dn", i)
flusher.Flush() // Trigger "chunked" encoding and send a chunk...
time.Sleep(500 * time.Millisecond)
}
})

log.Print("Listening on localhost:8080")
log.Fatal(http.ListenAndServeTLS(":8080", "<CERT_FILE>", "<KEY_FILE>", nil))
}


Any ideas why this might be?










share|improve this question















The following the example works very nicely for HTTP: Send a chunked HTTP response from a Go server



As soon as I add TLS, I see that the responses are no longer chunked:



func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
flusher, ok := w.(http.Flusher)
if !ok {
panic("expected http.ResponseWriter to be an http.Flusher")
}
w.Header().Set("X-Content-Type-Options", "nosniff")
for i := 1; i <= 10; i++ {
fmt.Fprintf(w, "Chunk #%dn", i)
flusher.Flush() // Trigger "chunked" encoding and send a chunk...
time.Sleep(500 * time.Millisecond)
}
})

log.Print("Listening on localhost:8080")
log.Fatal(http.ListenAndServeTLS(":8080", "<CERT_FILE>", "<KEY_FILE>", nil))
}


Any ideas why this might be?







ssl go chunked-encoding






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 12 at 10:53

























asked Nov 12 at 8:47









Mike Eller

214




214












  • Can you post something that exhibits the non-chunked response? I've tried your code in my local machine and it works.
    – ssemilla
    Nov 12 at 9:45








  • 2




    you are using http/2 and that doesn't support chunks
    – Vorsprung
    Nov 12 at 10:18










  • Thanks for trying this @ssemilla. I'm executing my code from a docker container. I'll strip this back and see what happens.
    – Mike Eller
    Nov 12 at 10:21


















  • Can you post something that exhibits the non-chunked response? I've tried your code in my local machine and it works.
    – ssemilla
    Nov 12 at 9:45








  • 2




    you are using http/2 and that doesn't support chunks
    – Vorsprung
    Nov 12 at 10:18










  • Thanks for trying this @ssemilla. I'm executing my code from a docker container. I'll strip this back and see what happens.
    – Mike Eller
    Nov 12 at 10:21
















Can you post something that exhibits the non-chunked response? I've tried your code in my local machine and it works.
– ssemilla
Nov 12 at 9:45






Can you post something that exhibits the non-chunked response? I've tried your code in my local machine and it works.
– ssemilla
Nov 12 at 9:45






2




2




you are using http/2 and that doesn't support chunks
– Vorsprung
Nov 12 at 10:18




you are using http/2 and that doesn't support chunks
– Vorsprung
Nov 12 at 10:18












Thanks for trying this @ssemilla. I'm executing my code from a docker container. I'll strip this back and see what happens.
– Mike Eller
Nov 12 at 10:21




Thanks for trying this @ssemilla. I'm executing my code from a docker container. I'll strip this back and see what happens.
– Mike Eller
Nov 12 at 10:21












1 Answer
1






active

oldest

votes


















1














log.Infof("Protocol Version: %s", request.Proto)


Confirms its using HTTP/2.0



Thanks Vorsprung






share|improve this answer





















    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53258539%2fsend-a-chunked-https-response-from-a-go-server%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    1














    log.Infof("Protocol Version: %s", request.Proto)


    Confirms its using HTTP/2.0



    Thanks Vorsprung






    share|improve this answer


























      1














      log.Infof("Protocol Version: %s", request.Proto)


      Confirms its using HTTP/2.0



      Thanks Vorsprung






      share|improve this answer
























        1












        1








        1






        log.Infof("Protocol Version: %s", request.Proto)


        Confirms its using HTTP/2.0



        Thanks Vorsprung






        share|improve this answer












        log.Infof("Protocol Version: %s", request.Proto)


        Confirms its using HTTP/2.0



        Thanks Vorsprung







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 12 at 10:53









        Mike Eller

        214




        214






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53258539%2fsend-a-chunked-https-response-from-a-go-server%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            The Sandy Post

            Danny Elfman

            Pages that link to "Head v. Amoskeag Manufacturing Co."