您可以添加要在跨域 fopen 调用中发送的 http 标头吗?


Can you add http headers to be sent on a crossdomain fopen call?

我的意思是,我想打开另一个网站上的图像文件,但他们有某种服务器端脚本,仅在浏览器上设置了某个cookie的情况下提供图像。

我是否可以在 cookie 标头中发送fopen调用?

是的,您可以通过配置 HTTP 流上下文来控制 HTTP 请求,包括添加 Cookie。

查看手册中的此示例:http://php.net/stream-context-create

$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en'r'n" .
              "Cookie: foo=bar'r'n"
  )
);
$context = stream_context_create($opts);
/* Sends an http request to www.example.com
   with additional headers shown above */
$fp = fopen('http://www.example.com', 'r', false, $context);
fpassthru($fp);
fclose($fp);

另请参阅 http://php.net/manual/en/context.http.php,了解所有 HTTP 上下文选项。