symfony 当从img标记请求时,图像服务返回406(不可接受

mbzjlibv  于 2023-01-26  发布在  其他
关注(0)|答案(1)|浏览(145)

我在试着从Symfony获取图像。

/**
 * @Route("/provide/image/{filename}")
 */
public function provideImage($filename)
{
  $path = 'myimgdir/' . $filename;
  $response = new BinaryFileResponse($path);
  return $response;
}

当我从Web浏览器本身调用此端点时,目标图像会得到正确处理。但是,当我将此URL设置为img标记(Angular 13应用程序)的“src”属性时,请求失败,返回406。

从浏览器获取

  • 请求标头 *
Accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
Cookie: SESSION=xxx
Host: xxx
Referer: xxx
sec-ch-ua: "Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Sec-Fetch-Dest: image
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin
User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36
  • 响应标头 *
accept-ranges: bytes
Access-Control-Allow-Origin: *
cache-control: max-age=0, must-revalidate, private
connection: close
content-length: 4030
content-type: image/jpeg
date: Thu, 12 Jan 2023 18:12:24 GMT
expires: Thu, 12 Jan 2023 18:12:24 GMT
last-modified: Thu, 12 Jan 2023 18:09:56 GMT
server: nginx/1.23.3
x-powered-by: PHP/7.2.34

从img标记中提取

  • 请求标头 *
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cache-Control: max-age=0
Connection: keep-alive
Cookie: SESSION=xxx
Host: xxx
If-Modified-Since: Thu, 12 Jan 2023 18:09:56 GMT
sec-ch-ua: "Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36
  • 响应标头 *
Access-Control-Allow-Origin: *
cache-control: max-age=0, must-revalidate, private
connection: close
content-type: text/html; charset=UTF-8
date: Thu, 12 Jan 2023 18:12:34 GMT
expires: Thu, 12 Jan 2023 18:12:34 GMT
server: nginx/1.23.3
transfer-encoding: chunked
x-powered-by: PHP/7.2.34

这是为什么,我怎样才能使它从我的工作?

**注意:**此项目仍在Symfony 3.4上运行

dgsult0t

dgsult0t1#

很可能是CORS问题-您可以将以下标题添加到Symfony控制器操作中:

$response->headers->set('Access-Control-Allow-Origin', '*');
$response->headers->set('Access-Control-Allow-Methods', 'GET');

相关问题