我想解析动态 .csv 文件的内容。但是,此代码(显然带有 duff 文件名等):
$socket = fsockopen("www.example.com", 443);
fwrite($socket, "GET /dynamicCsv.csv?param=value HTTP/1.1\r\n");
fwrite($socket, "Host: www.example.com\r\n");
fwrite($socket, "Connection: close\r\n");
fwrite($socket, "\r\n");
while(!feof($socket)) echo fgets($socket);
...只需下载文件。
在命令行中使用 openssl 我可以输入完全相同的请求并返回以下响应标头:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-disposition: attachment; filename=dynamicCsv.csv
Pragma: public
Cache-Control: max-age=0
Set-Cookie: SESSIONID=ASDFUHN023UIN0F; Path=/; Secure
Content-Type: text/csv;charset=UTF-8
Transfer-Encoding: chunked
Date: Thu, 04 Feb 2010 16:53:00 GMT
为了避免自动下载文件,我尝试使用 截断第一个字符substr
,希望浏览器可能会将响应输出fgets
视为当前文档的一组标题。那没有用。追求同样的想法,我还尝试在打开套接字之前插入一堆换行符,但这也不起作用。
我的两个问题是:
- 为什么浏览器认为它应该下载文件?
- 我怎样才能阻止它?
我应该提一下,到目前为止我只使用过 Chrome,但我不明白它为什么会有所作为。
非常感谢,安德烈亚斯