资源解释为文档,但使用 MIME 类型 application/csv 传输
Posted
技术标签:
【中文标题】资源解释为文档,但使用 MIME 类型 application/csv 传输【英文标题】:Resource interpreted as Document but transferred with MIME type application/csv 【发布时间】:2017-01-30 13:17:07 【问题描述】:我有一个下载 CSV 文件的按钮。 该文件似乎下载正常,但我收到以下警告。 此警告似乎只出现在 chrome 中。
资源解释为 Document,但使用 MIME 类型 application/csv 传输:
这是我设置 CSV 标头的地方。
/**
* Set the php mime header
*
* This will overwrite any previous headers
*
* @param string $header any custom headers that need to be set
*
* @return void
* @access public
*/
function setHeader($header='')
if ($header)
// set custom headers
header($header);
else
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename="'.$this->_filename.'";');
//This is known that Internet Explorer has problems with SSL connection (https).
//http://support.microsoft.com/default.aspx?scid=kb;en-us;812935
//http://support.microsoft.com/default.aspx?scid=kb;en-us;316431
// do not send no cache header in https for IE
// get protocol information
$url_info = parse_url(current_url());
$protocol = (isset($url_info['scheme'])) ? $url_info['scheme'] : NULL;
$using_ie6_8 = isset ($_SERVER['HTTP_USER_AGENT']) ? preg_match('/(MSIE\s[0-8]+\.)/', $_SERVER['HTTP_USER_AGENT']) : FALSE;
if (!is_null($protocol) && $protocol == 'https' && $using_ie6_8)
header('Cache-Control: private, max-age=0, must-revalidate');
header('Pragma: private');
header('Expires: '.gmdate('D, d M Y H:i:s', time()-3600).' GMT');
//end setHeader()
响应标题
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:keep-alive
Content-Disposition:attachment; filename="submission_log.csv";
Content-Type:application/csv
Date:Thu, 22 Sep 2016 04:59:06 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Pragma:no-cache
Server:openresty
Transfer-Encoding:chunked
X-Content-Type-Options:nosniff
X-Frame-Options:SAMEORIGIN
请求标头
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:6252
Content-Type:multipart/form-data; boundary=----WebKitFormBoundary4CxCF8KLzdtoGRO2
Cookie:lastSelectedLinkId=2661; lastSelectedAssetId=2151; SQ_SYSTEM_SESSION=o44hori3h2fcu5ltm29u6rv2k44bq1tu6v3364pdi8jn273scebnjm3lsuik5teasneeh664j98o3ajbur6p39kque68qgjohkktsk3; _ga=GA1.2.545099348.1472451817
Host:matrixdev.squiz.net
Origin:http://matrixdev.squiz.net
Referer:http://matrixdev.squiz.net/_admin/?SQ_BACKEND_PAGE=main&backend_section=am&am_section=edit_asset&assetid=2151&sq_asset_path=70%2C2151&sq_link_path=71%2C2661&asset_ei_screen=log
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36
【问题讨论】:
【参考方案1】:如果您在<a>
中有下载 csv 文件的链接,请将“下载”属性添加到<a>
。
【讨论】:
如果您希望这样做,请确保您的目标浏览器支持 button 属性(并非所有浏览器都支持)! caniuse.com/#feat=download以上是关于资源解释为文档,但使用 MIME 类型 application/csv 传输的主要内容,如果未能解决你的问题,请参考以下文章
CSS、.htaccess、资源解释为样式表,但使用 MIME 类型 text/html 传输
资源解释为 Document,但使用 MIME 类型 image/svg+xml 传输:
资源解释为脚本,但使用 MIME 类型 text/html 传输:JSONP
Flask:资源解释为样式表,但使用 MIME 类型 text/html 传输