首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cURL:在分块编码中发现错误的编码,为什么?

cURL:在分块编码中发现错误的编码,为什么?
EN

Stack Overflow用户
提问于 2015-11-29 10:39:10
回答 1查看 3.4K关注 0票数 0

我正在试验CGI和分块编码("Transfer- encoding : chunked“HTTP报头字段)。通过这种方式,可以在没有content-length报头的情况下发送文件。我用Ruby写了一个简约的CGI应用程序来试用它。我的代码如下(chunked.rb):

代码语言:javascript
复制
#!/usr/bin/ruby

puts "Date: Fri, 28 Nov 2015 09:59:59 GMT"
puts "Content-Type: application/octet-stream; charset=\"ASCII-8BIT\""
puts "Content-Disposition: attachment; filename=image.jpg"
puts "Transfer-Encoding: chunked"
puts

File.open("image.jpg","rb"){|f|
 while data=f.read(32)
   STDOUT.puts data.size.to_s(16)
   STDOUT.puts data
 end
 STDOUT.puts "0"
 STDOUT.puts
}

我从这里获得了这个想法和分块格式示例:https://www.jmarshall.com/easy/http/

代码语言:javascript
复制
HTTP/1.1 200 OK
Date: Fri, 31 Dec 1999 23:59:59 GMT
Content-Type: text/plain
Transfer-Encoding: chunked

1a; ignore-stuff-here
abcdefghijklmnopqrstuvwxyz
10
1234567890abcdef
0
some-footer: some-value
another-footer: another-value
[blank line here]

因为我的CGI应用程序驻留在Apache cgi-bin目录中,所以我可以发出cURL:

代码语言:javascript
复制
curl  http://example.com/cgi-bin/chunked.rb -O -J

cURL应该从块中重新组合原始image.jpg文件,但不幸的是,保存的文件并不完整,它比原始文件小,并且我也从cURL收到了一条错误消息:

代码语言:javascript
复制
curl: (56) Malformed encoding found in chunked-encoding

但是,当我将行data=f.read(32)更改为类似于data=f.read(1024*50)的内容时,文件将被正确保存。使用来自服务器的另一个更大的文件使CGI应用程序再次无用,我再次得到相同的错误信息。我该怎么做才能让我的CGI应用程序正常工作,并正确发送文件?

EN

回答 1

Stack Overflow用户

发布于 2015-11-29 13:46:10

因此,下面的工作示例:

代码语言:javascript
复制
    puts "Date: Fri, 28 Nov 2015 09:59:59 GMT"
    puts "Content-Type: application/octet-stream; charset=\"ASCII-8BIT\""
    puts "Content-Disposition: attachment; filename=image.jpg"
    puts "Transfer-Encoding: chunked"
    puts

    File.open("image.jpg","rb"){|f|
     while data=f.read(32)
       STDOUT.puts data.size.to_s(16)
       STDOUT.print data
       STDOUT.puts
     end
     STDOUT.puts "0"
     STDOUT.puts
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33978822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档