可以从 http(javascript 客户端)直接向 Amazon SQS 发送请求吗?

Posted

技术标签:

【中文标题】可以从 http(javascript 客户端)直接向 Amazon SQS 发送请求吗?【英文标题】:Possible to send request directly to Amazon SQS from http (javascript client)? 【发布时间】:2012-01-13 16:43:37 【问题描述】:

是否可以直接从 javascript 向 Amazon 的 SQS 发送消息请求?我正在尝试创建一个日志系统,并且很想绕过将请求发送到中间人服务器。另外,有人知道我可以利用此解决方案的任何替代方案吗?

【问题讨论】:

这是服务器端 Javascript(例如 Node.js)还是在浏览器/客户端中运行? 客户端。澄清一下,您可以通过使用脚本注入并将脚本元素的 src 设置为其余 url 来克服跨域限制。如果亚马逊愿意接受一个可选的回调参数来包装响应 json 对象,这将是一个标准的 JSONP 调用。对于任何关心的人,您可以在这里阅读更多信息:en.wikipedia.org/wiki/JSONP 【参考方案1】:

SQS(事实上所有的 AWS 服务)都公开了基于 REST 的 API。您可以通过 javascript 代码直接向 SQS REST api 发出 http 请求。给定的 api 文档 ID here。

【讨论】:

浏览器同源策略会阻止这种情况。除非 OP 正在谈论服务器端 Javascript(例如 Node.js) @CodyCaughlan,你是know of an alternative service that does work from a browser吗? WebSockets 可以工作,所以像 Socket.io 或 Pusher.com 这样的东西应该可以正常工作。【参考方案2】:

除非您从与您尝试发送到的 SQS 域相同的 SQS 域加载您的 Javascript,否则不会,由于客户端/Javascript 同源策略,您将无法交叉发布到 SQS。

最好的办法是使用自己的中间人服务器。

【讨论】:

实际上,有没有办法使用 json 格式化输出并将其包装在回调函数中?如果是这种情况,那么可以使用 jsonp 来克服跨域限制。【参考方案3】:

您可以在您的 JS 应用程序中使用 AWS Javascript API,然后使用该库为您进行 SQS API 调用。

【讨论】:

以上是关于可以从 http(javascript 客户端)直接向 Amazon SQS 发送请求吗?的主要内容,如果未能解决你的问题,请参考以下文章

从 javascript Web 服务客户端发送 CORS POST 请求返回 http 405 错误

如何在客户端 javascript 中使用 Grafana Http API

我可以通过 ASP.NET 将对象从客户端 javascript 发送到服务器端代码吗?

使用 html 和 Javascript 进行客户端排序

从 PHP 发送 HTTP 请求而不等待响应?

从 Javascript 中的 JWT 中提取“角色”