【发布时间】:2014-09-05 22:08:19
【问题描述】:
当我从桌面浏览器运行下面的代码时,没有问题。
但是,当我从 Android Chrome 或默认的 Android 浏览器尝试时,我总是收到“下载失败”消息。
代码:
<cfsetting enablecfoutputonly="yes">
<cfcontent type="text/calendar" reset="Yes">
<cfheader name="Content-Disposition" value='inline; filename="newAppointment.ics"'>
<cfoutput>BEGIN:VCALENDAR
PRODID:-//Some organization//some application//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
UID:20120925T072912Z-140@http://localhost/www/
CREATED:20140925T072912Z
DTSTAMP:20140922T090500Z
DTSTART:20140922T090500Z
DTEND:20140922T100500Z
DESCRIPTION:Please attend this sample meeting
SUMMARY:Invitation to attend training
LOCATION:Earth
ATTENDEE;RSVP=TRUE:mailto:periklis@example.com
ORGANIZER;CN=periklis@example.com:mailto:periklis@example.com
LAST-MODIFIED:20140925T072912Z
PRIORITY:5
SEQUENCE:0
STATUS:CONFIRMED
TRANSP:TRANSPARENT
END:VEVENT
END:VCALENDAR</cfoutput>
<cfsetting enablecfoutputonly="no">
我尝试使用“文本/日历”和“应用程序/八位字节流”作为内容类型,并使用“内联”和“附件”作为内容处置。我也试过带引号和不带引号的文件名......一切都无济于事。
我们在 IIS 服务器上运行 Coldfusion 10,我们将此配置添加到服务器,以便我们现在可以直接从服务器下载 .ics 文件。但是,我们希望动态生成一个单次使用文件并将其提供给用户。
IIS 服务器设置:
<configuration>
<system.webServer>
<staticContent>
<remove fileExtension=".ics" />
<mimeMap fileExtension=".ics" mimeType="application/octet-stream" />
</staticContent>
</system.webServer>
</configuration>
使用 Chrome 的远程调试,我可以看到这是来自上面代码的响应标头。 (注意:我看到很多人把 cfheader 放在第一位,然后 cfcontent ......但是如果我按照这个顺序,内容处置就不会被传递,所以我一直把 cfcontent 放在第一位。)
响应标头:
HTTP/1.1 200 OK
Connection: close
Date: Fri, 05 Sep 2014 21:31:31 GMT
Server: Microsoft-IIS/6.0
P3P: CP='NOI DSP COR LAW NID CUR ADMa OUR DELa IND PHY ONL UNI PUR COM NAV STA'
Vary: Accept-Encoding,User-Agent
Content-Disposition: inline; filename="newAppointment.ics"
Content-Type: text/calendar;charset=UTF-8
我搜索了互联网,发现最接近的是另一个 stackoverflow 问题,其中包含一些建议但没有被接受的答案。另外……作为一个新用户,我无法评论它以询问是否找到了答案。
cfheader cfcontent Mobile Browser download unsuccessful
我尽量提供我能想到的细节。如果更多信息有助于解决这个奇怪的问题,请告诉我。
一如既往,我们将不胜感激。
【问题讨论】:
-
您的代码在 CF9/IIS7 上运行,服务于 Adroid 4.2.2 上的 Chrome。您的响应标头表明您使用的是 IIS6。没有答案,但我的直觉是问题所在。
标签: android iis mobile coldfusion httpresponse