首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCS中的静态网页- html中java脚本中的API调用没有响应

GCS中的静态网页- html中java脚本中的API调用没有响应
EN

Stack Overflow用户
提问于 2020-11-21 08:59:50
回答 2查看 52关注 0票数 1

我在gcs存储桶中有静态页面,并尝试调用API。如果我点击gcs bucket中经过身份验证的url,我会得到任何响应:https://storage.cloud.google.com//sample.html。我做错什么了吗?

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Info</title>
    <script>
      let request = new XMLHttpRequest();
      request.open("GET", "http://<static_ip>/api/v1/info?id=12345678");
      request.send();
      request.onload = () => {
        console.log(request);
        if (request.status === 200) {
          console.log(JSON.parse(request.response));
        } else {
          console.log(`error ${request.status} ${request.statusText}`);
        }
      };
    </script>
  </head>
  <body></body>
</html>
EN

回答 2

Stack Overflow用户

发布于 2020-11-21 09:12:33

我认为你在数据加载之前发送了你的响应。Resquest.open()和send方法应该在onload调用之后出现。

票数 0
EN

Stack Overflow用户

发布于 2020-11-24 00:27:27

如果你在chrome中进入控制台,你会看到下面的错误:

混合内容:“”https://storage.googleapis.com/mymadpbucket/index.html“”处的页面已通过HTTPS加载,但请求了不安全的XMLHttpRequest终结点“”http://%3Cstatic_ip%3E/api/v1/info?id=12345678'“”。“”此请求已被阻止;必须通过HTTPS提供内容。

你不能仅仅在https网页上提供嵌入的http内容。这是有文档记录的,还有更多的问题需要解决,比如this one

我创建了一个可以从云存储提供服务的文件的示例。在尝试此操作之前,您必须配置您的bucked的cors。您不会直接在浏览器上看到任何内容,但您会在控制台中看到图像内容(按F12键)。我使用imgur作为源,因为我不知道您尝试在该静态ip源上提供什么或如何提供服务,而且imgur有广泛的cors可用于存储。

代码语言:javascript
复制
cors.json
[
{
  "origin": ["*"],
  "method": ["GET", "POST", "PUT", "OPTIONS"],
  "responseHeader": ["Content-Type", "Access-Control-Allow-Origin"],
  "maxAgeSeconds": 100
}
]

index.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Info</title>
    <script>
      let request = new XMLHttpRequest();
      request.open("GET", "https://i.imgur.com/r97IfAU.jpg");
      //request.setRequestHeader('Access-Control-Allow-Headers', 'https://imgur.com');
      request.send();
      request.onload = () => {
        console.log(request);
        if (request.status === 200) {
          console.log(request.response);
        } else {
          console.log(`error ${request.status} ${request.statusText}`);
        }
      };
    </script>
  </head>
  <body></body>
</html>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64938784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档