可以从 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