在写这篇文章之前,我已经检查了多个线程,但不幸的是,没有任何工作,我想做的。
问题摘要-我不能远程访问托管在谷歌的图片。每次我得到403错误。
我想要的是导入通过Google My Map创建的自定义Map。它工作正常,但唯一的问题是附加到标记的图片(Map中的自定义位置)。这样的图像的URL是这样的:
https://doc-0o-b8-mymaps.googleusercontent.com/untrusted/hostedimage/...(etc)
最初,我想在导入过程中下载图像,以便我可以自己托管它们,但无法做到这一点(尝试使用php - file_get_contents和cURL)。在每种情况下,完全相同的结果- 403错误。
$download = file_get_contents($image['src']);
$temp = 'image';
file_put_contents($temp, $download);
$file_data = getimagesize($temp);
$image_data = $file_data['mime'];
$image_type = explode('/', $image_data);
$extension = $image_type[1];
$filename = uniqid().'.'.$extension;
rename($temp, $filename);
然后我决定只是抓取URL并在我的网站上使用它作为img src,但图像不显示,并在控制台检查的东西,我看到他们再次被阻止与403状态.试图修复它使用referrerpolicy=“no-referrer”像建议在这里的其他线程,但这对我不起作用.
我还注意到,网址的变化-在数据库中,它是
https://doc-14-b8-mymaps.googleusercontent.com/..。
而根据请求,它会获得额外的:
https://www.google.com/maps/d/refreshhostedimage?image=
GET
https://www.google.com/maps/d/refreshhostedimage?image=https://doc-14-b8-mymaps.googleusercontent.com/untrusted/hostedimage/9avpvq94r6vtaqkua94s7osnog/1gi4vlth2r1htlo40bn4663sg8/1681729312250/SAFQ1ifJvKFuhLWIu6k2d2Vts9i4q4bn/02678364236970215753/5ACtvi-HSK4OcLlk_DqkMRk3QBAAAEx4FkNe76dO8q7TrlqF4hxLI-CvR8laYA5wjC_rjeCKMZTt-7_OotC6v27YfauAu-thquQJIEyb78Ak-6bsGKByVuiyyMcasH35iRSV6bmdNHIdmt3OOv_b_lRUFv10IpXHMn1XYxveaH-eQucLbj4jtwDJFIFIBZTitlUD3TFVsdHSWE4AOqrQyJyyCTw6Yml4hz5Ipj8ZgMRphGXw3vXM?session=0&fife
Status
403
Forbidden
VersionHTTP/3
Transferred1.34 kB (0 B size)
Referrer Policyno-referrer
Request PriorityLow
alt-svc
h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
cache-control
no-cache, no-store, max-age=0, must-revalidate
content-encoding
gzip
content-security-policy
script-src 'nonce-gR9uy9oHHNH4UMkGREnXXg' 'unsafe-inline' 'strict-dynamic' https: http:;object-src 'none';base-uri 'self';report-uri /maps/d/cspreport
content-type
text/html; charset=utf-8
cross-origin-opener-policy
same-origin-allow-popups
date
Tue, 18 Apr 2023 11:05:46 GMT
expires
Mon, 01 Jan 1990 00:00:00 GMT
p3p
CP="This is not a P3P policy! See g.co/p3phelp for more info."
p3p
CP="This is not a P3P policy! See g.co/p3phelp for more info."
pragma
no-cache
server
ESF
server-timing
gfet4t7; dur=207
set-cookie
NID=511=VSKi-vl465owV7dxYA30KpIAOhK-vxK3UOYRrhnw5bCBzk8tybT08No9Bg4Fo5ecyXx_0EZ6TNOrTVG-XrIXfQ6yi9G85-bpZJahQoLgY7KPm8AlAHFD5zfxrdGLLd5-EI0SH1BnMAB9-DwK8VYE8PbywXsihwYieY7bSRuwrds; expires=Wed, 18-Oct-2023 11:05:45 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=none
set-cookie
NID=511=g67_nFN3euSY9Zbm2FiZJ6B3Z5S9Zhuxj9Ne8lphLd3wZbcJgM_VM3QfwwABaZYzA8uXVP5tLadqXrztOrtZ_PtAKGVNFvD8E9tQXWv9KX5Xc1bLnoeD9CKsP4kMpeJ7_LT-5ho1PmZvbPrJdZnk-EAuzUqFq0UvHJnxgjllMZ8; expires=Wed, 18-Oct-2023 11:05:45 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=none
x-content-type-options
nosniff
x-xss-protection
0
Accept
image/avif,image/webp,*/*
Accept-Encoding
gzip, deflate, br
Accept-Language
en-US,en;q=0.5
Alt-Used
www.google.com
Connection
keep-alive
Host
www.google.com
Sec-Fetch-Dest
image
Sec-Fetch-Mode
no-cors
Sec-Fetch-Site
cross-site
TE
trailers
User-Agent
Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/113.0
我怀疑谷歌正在积极阻止我的请求,也许我需要提供凭据或一些API密钥?
我想知道什么是最好的方式来处理这个问题,因为我的想法了…
1条答案
按热度按时间vh0rcniy1#
非常感谢@ADYSON!我非常专注于找到正确的功能,但我没有想到它可能与Map本身的权限级别有关。
当我将Map设置为公开可用时,图像加载没有任何问题,因此谷歌积极阻止请求,因为我的Map是私人的。
值得一提的是,如果其他人也会面临类似的问题。