'image/jpg,image/gif,image/png')); $context = stream_context-6ren">
gpt4 book ai didi

php - http Accept header 如何工作?

转载 作者:可可西里 更新时间:2023-11-01 01:04:39 25 4
gpt4 key购买 nike

这是我的代码;

<?php $url = @$_POST["ekleme"];
if (filter_var($url,FILTER_VALIDATE_URL) === FALSE) {
die("Geçersiz link!");
}

$cparams = array('http'=>array('method'=>"GET",'Accept'=>'image/jpg,image/gif,image/png'));
$context = stream_context_create($cparams);
$fp = @fopen($url, 'rb', false, $context);
if (!$fp) die("Problem with url");
$meta = stream_get_meta_data($fp);
var_dump($meta);

我给它一个 pdf 文件的 url。我希望它会给出某种 http 错误。但这就是我得到的;

array(10) {
["wrapper_data"]=>
array(9) {
[0]=>
string(15) "HTTP/1.1 200 OK"
[1]=>
string(35) "Date: Wed, 02 Jan 2013 14:16:02 GMT"
[2]=>
string(14) "Server: Apache"
[3]=>
string(44) "Last-Modified: Wed, 19 Dec 2012 13:53:09 GMT"
[4]=>
string(34) "ETag: "1c80e53-f5a7-4d134ef3b7b40""
[5]=>
string(20) "Accept-Ranges: bytes"
[6]=>
string(21) "Content-Length: 62887"
[7]=>
string(29) "Content-Type: application/pdf"
[8]=>
string(17) "Connection: close"
}

它继续显示其他不相关的东西。我是否了解 Accept header 的工作方式有误,还是我做错了什么?如果内容类型是特定的,有没有办法要求服务器只发送数据?

最佳答案

Accept header 让客户端告诉服务器它可以处理什么类型的数据。

服务器可能会完全忽略它(如果资源仅以一种格式存在,这是正常的)或者它可能会使用它来选择最适合客户端的格式(如果不适合,它可能会响应 406 Not Acceptable 错误)没有合适格式的数据)。

您遇到的是前一种行为。 URL 指向一个 PDF 文件。服务器未设置为在 PDF 和其他格式之间做出选择,因此它不会关注 Accept header 并返回 PDF。

Is there a way to ask a server only send data if content type is something spesific?

接受 header 尽可能接近。

如果您想避免下载您可能无法处理的大文件,请在发出 GET 请求之前发出 HEAD 请求并检查响应的内容类型。

关于php - http Accept header 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14123658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com