javascript 如何从我的网站正确访问托管在谷歌上的图片?

dpiehjr4  于 2023-04-19  发布在  Java
关注(0)|答案(1)|浏览(112)

在写这篇文章之前,我已经检查了多个线程,但不幸的是,没有任何工作,我想做的。
问题摘要-我不能远程访问托管在谷歌的图片。每次我得到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密钥?
我想知道什么是最好的方式来处理这个问题,因为我的想法了…

vh0rcniy

vh0rcniy1#

非常感谢@ADYSON!我非常专注于找到正确的功能,但我没有想到它可能与Map本身的权限级别有关。
当我将Map设置为公开可用时,图像加载没有任何问题,因此谷歌积极阻止请求,因为我的Map是私人的。
值得一提的是,如果其他人也会面临类似的问题。

相关问题