【问题标题】:Elm websocket request origin within a browser浏览器中的 Elm websocket 请求来源
【发布时间】:2018-05-22 16:15:52
【问题描述】:

假设我制作了一个 elm 应用程序;它从 websocket 请求数据以检查来自 poloniex.com 的比特币价格。我将它编译成一个 .html 文件,然后将它部署到 Heroku 或后端我喜欢的任何服务器上。

当用户访问我的网站并请求该 .html 文件,然后从 websocket 请求中查看比特币价格时,是发出该 websocket 请求的用户的 IP 地址还是后端的(例如 Heroku在这种情况下)发出 websocket 请求的 IP 地址?

我问是因为我正在考虑两种不同的设计。要么让我的后端提取比特币价格数据,然后将其提供给我的用户,要么让用户直接从源本身(即本例中的 poloniex)请求价格。后者会不那么令人头疼,但如果所有请求最终都来自后端并因此来自一个 ip 地址(它们会有请求限制),则不可能

编辑:粗体表示看不到问题所在的人。

【问题讨论】:

  • 你忘了问问题。
  • 只是加粗了。耶稣,人们喜欢在这里投反对票。
  • @Jimbo 是的,他们这样做了——但通常有相当充分的理由,在大多数情况下,它有助于提高问题的质量——在这种情况下,主题并不明确,如果有人错过了问题奇数很高,其他人也会如此。

标签: html heroku websocket request elm


【解决方案1】:

假设您使用的是标准 Elm Websocket 包,elm-lang/websocket,websocket 将连接到您指向的任何 URL。如果你这样设置:

subscriptions model =
    listen "ws://echo.websocket.org" Echo

然后客户端浏览器将直接连接echo.websocket.org。该 websocket 连接的目标可能会将您的应用程序视为引荐来源网址,但其连接将使用充当客户端的用户浏览器的 IP。

如果您希望后端服务器应用程序充当代理,则可以在 listen 中使用该 URL

subscriptions model =
    listen "ws://myapp.com" ...

【讨论】:

  • 因此目标不会禁止我的应用程序,因为连接将指向单个用户。应用程序因此被视为“一个”用户吗?
  • 您必须参考目标应用程序的服务条款。如果浏览器直接连接到 poloniex.com,则 poloniex.com 将看到您用户浏览器的 IP,但可能会在引荐来源网址头中看到您的 Heroku 应用程序的 URL。您的目标服务器应用程序可能有一些用于速率限制的令牌身份验证概念(例如,使用 Google API 需要 API 令牌)
猜你喜欢
  • 2019-07-12
  • 2017-05-07
  • 2017-11-29
  • 2016-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多