gpt4 book ai didi

javascript - 未设置 CORS header - 我可以请求图像 url,然后将其返回给自己吗?

转载 作者:搜寻专家 更新时间:2023-10-31 21:29:53 25 4
gpt4 key购买 nike

我正在尝试使用从图像编译的网格填充 WebGL Earth。这些图像是跨域的,并且托管在无法设置适当 header 的服务器上。我可以 XMLHttpRequest 图像 url,然后通过 PHP 将它们返回给我以绕过 CORS 错误吗?

或者,更具体地说,我可以使用自己的网络服务器作为代理,在 WebGL 上下文中将 img url 返回给自己(绕过 CORS)吗?

编辑:这里真正的问题是我是否可以使用我自己的网络服务器作为代理来传递 url,或者我是否必须实际将每个图像下载到服务器然后使用它.

最佳答案

我在使用 API 时遇到过类似的问题。首先,我尝试在 JS 中执行所有操作,可能会得到与您相同的错误消息。

我的解决方案是切换到 PHP 并在服务器端执行,因为现代浏览器会阻止您想要执行的操作。


所以是的,这是可能的。

在后台获取图片,然后提供给前台。


只需先检索图片,然后将它们作为输出发送到浏览器。您可以通过执行以下操作来同步执行此操作:

$ch = curl_init ... 
...
$pic = curl_exec ... // get the picture

// and then echo it

这个我做过一次但是记错了。或者您可以异步执行,这通常是在使用 img-tags 时执行的。我不确定它是如何与 WebGL 一起工作的,但应该是相似的:

  • 将图片下载到您的文件系统
  • 然后向浏览器提供 URL。

然后取决于图像有多大,需要多长时间,以及是否要朝这个方向发展的 API。


第一条评论的回答:

棘手。我没有使用 WebGL Earth 的经验,也不知道是否可以通过 Ajax(查看 here)或是否使用 AngularJS(查看 here)异步加载数据。您需要尝试一下。我会特别关注加载时间。

有一个像 http://example.com/api/get_image/65446 这样的 API 调用,它下载图片,调整它的大小,然后将它发送到浏览器。

在这种情况下你会做的是:

  • 将“正常”页面发送给用户
  • 然后在那里寻找要显示图片的事件
  • 当事件发生时,使用我刚才提到的 API 调用,并使用成功处理程序将其添加到您的页面。同样,它如何与 WebGL Earth 一起工作是另一个我无法回答的问题。

如果您想将其用于移动设备,则需要考虑图片尺寸。由于屏幕相对较小,您应该先将图片缩小。但是,要花多长时间才能拍到照片,我想这是最大的挑战。想要滚动地球的人希望立即看到图片,而不是 5 秒后(因为我滚动更有可能)

考虑是否可以先准备下载和调整大小。如果您只想显示某些图片,比如总共 10.000 张,那么我会这样做。这样您就无需考虑加载时间以及何时删除哪些图片。您应该针对该主题打开另一个问题,并首先尝试 Ajax 是否可行。

关于javascript - 未设置 CORS header - 我可以请求图像 url,然后将其返回给自己吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31119447/

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