是否可以直接在javascript中调用Pubsub的订阅拉取而不是调用java方法来获取数据?

Posted

技术标签:

【中文标题】是否可以直接在javascript中调用Pubsub的订阅拉取而不是调用java方法来获取数据?【英文标题】:Is it possible to call Pubsub's subscription pull directly in javascript instead of calling java method to fetch the data? 【发布时间】:2015-07-11 03:10:21 【问题描述】:

我一直在 pubsub 工作,在那里我可以成功地从 java 中特定项目下的特定主题中提取数据。如果我必须在 html 中显示这些数据,首先我必须调用 servlet 方法,然后 servlet 将调用 pubsub api 来获取数据,然后我必须在响应中包含该数据。

由于它涉及额外的一层(java)来访问数据,是否可以通过跳过java调用直接在javascript调用中感染数据..? google pubsub 中是否有任何 api 可用于此目的?

【问题讨论】:

【参考方案1】:

该 api 可以在 javascript(使用 ajax)中使用,因为它只是 https 调用,https://cloud.google.com/pubsub/reference/rest/ 但是这是一个坏主意,因为您需要公开您的服务器帐户访问令牌,然后客户端可能会滥用它。

【讨论】:

是的,我太害怕了。我与 java 和 google 通信的唯一方法是使用服务帐户,并且使用其他 google 帐户进行身份验证将不允许我从 pubsub 发布或提取消息。我想通过java端获取服务帐户的访问令牌,然后将该访问令牌提供给客户端(可能它将存储在javascript中的变量中),然后直接对您使用授权标头指定的url进行ajax调用作为该访问令牌。是不是太没有安全感了?这也会危及我的安全吗? 你所描述的正是我所说的你可以做的,我解释了为什么它会非常不安全。要了解 oauth2,请阅读 google 的官方指南并从“google oauth2 playground”进行试验。了解该过程非常重要,因为您知道为什么永远不应该将令牌暴露给客户端。 感谢您的简短解释。我将阅读有关安全性的 oauth2 文档,但我决定在服务器端实施,而不是在客户端影响安全性。 这是一个很好的答案。谢谢齐格。此外,截至 2015 年 5 月 1 日,主题/订阅的数量有限制,即每个项目 10,000 个主题和每个主题 10,000 个订阅。请将 Cloud Pub/Sub 视为服务器到服务器的通信工具。

以上是关于是否可以直接在javascript中调用Pubsub的订阅拉取而不是调用java方法来获取数据?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 QWebView 中从 JavaScript 调用 C++ 函数?

是否可以在JavaScript中代理对属性的调用?

是否可以在 Mobile Safari 中使用 Javascript 在输入或文本区域上调用键盘?

Javascript:对相邻对象的函数调用?

是否可以使用 Emscripten 从 JavaScript 调用 C++ 函数?

如何从 JavaScript 调用使用 DDC 创建的 Dart 库?