A recent update to Chrome has begun blocking XLSX downloads coming from our website.
I have read Chrome's documentation and guidelines about how they determine if something is potentially harmful but it makes no mention of how to resolve issues outside of reaching out to them. Our files and our site meet all the guidelines they lay out. Most of their documentation is based around executable downloads so it's not clear how this information effects simple file downloads.
The site and the file are served from the same host using HTTPS. The download is driven by an anchor tag that links to an API which serves the file.
Other similar APIs that serve generated CSV files or PDF files of the same data are not effected.
I have also modified our file generation to output XLS files instead of XLSX, but those are blocked too.
Below are the headers of the response, as far as I know everything in regards to disposition or content type are correct so I don't see chrome using those to block the file.
Cache-Control: must-revalidate, private
Connection: keep-alive
Content-disposition: attachment; filename="test-file.xlsx"
Content-Type: application/xlsx
Date: Fri, 17 Jul 2020 16:04:41 GMT
Expires: -1
Server: nginx
transfer-encoding: chunked
X-DNS-Prefetch-Control: off
X-Frame-Options: SAMEORIGIN
I have also verified that the files are in fact not dangerous, they contain simple excel data and nothing strange is being injected or is compromised.
We have also tested various download methods, direct anchor links, form posts, blobs etc. It is always blocked.
Is there a specific request/response header or download method or flag I'm missing that will stop chrome from blocking the files?
Updates
I have confirmed that this issue effected a 83.x version of chrome as well as the latest version Version 84.0.4147.89
Thanks to @Alex, we have confirmed this issue is not present on the Linux or Windows version of Chrome. OSX Only.
The issue disappeared for 20-30 minutes earlier today and then returned.
Users report the issue is present all the way back to Chrome 80+.