[英]Chunked transfer-encoding in django rest framework (nginx+gunicorn)
我已经使用Django Rest Framework构建了一个API,可以从django模型提供ical feed。 Feed内容经过验证,并且可以在我测试过的所有日历应用程序中使用, 除了iOS上的iCal之外 。 如果复制/粘贴,则iO上的iCal将接受内容,但不接受从url导入。
我怀疑导致此问题的原因是http-header: transfer-encoding:分块
我试图弄清楚为什么将传输分块,并查看是否解决此问题将使iOS读取提要。
以下是一些简化的代码:
渲染
from rest_framework import renderers
class ICALRenderer(renderers.BaseRenderer):
media_type = 'text/html'
format = 'ical'
charset = 'utf-8'
def render(self, data, media_type=None, renderer_context=None):
blob = tools.ical_generator(data, 'My calendar name', 'My calendar description')
return blob
tools.ical_generator
def ical_generator(events=[], calname='', caldesc=''):
cal = vobject.iCalendar()
# build header
# iterate over events
# build footer
icalstream = cal.serialize()
return icalstream
注1:执行wget时 ,只会显示ical_generator的页眉和页脚 ,并且传输不会完成,而是无限期地“挂起”。
注意2:该API也可用于ical feed以外的其他目的,并且在其他情况下,http-header 不会分块。
使用内容类型:iOS上的text / calendar和iCal会吃掉它。
我测试过的所有其他验证工具都允许使用text / html和text / plain,因此iOS似乎非常挑剔...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.