【问题标题】:What happens if your server does XHR to itself?如果您的服务器对自己执行 XHR,会发生什么?
【发布时间】:2017-09-22 21:54:18
【问题描述】:

本周我正在研究使用 Angular 进行服务器端渲染。它的架构似乎是完全同构的,因此,如果您在服务器或客户端上获取数据,则运行的是同一行代码。因此,它会发出类似this.http.get('http://www.example.com/myurl'); 的调用,其中this.http 将是来自@angular/httpHttp 的一个实例。

在客户端,这非常清楚。这意味着浏览器正在向我的服务器发出 XHR 请求。

在服务器端...幕后实际发生了什么?我想节点服务器完全不知道它的域,会发出一个常规的 http 请求,通过 DNS 查找和一切,只是为了找到自己?

准确吗?

【问题讨论】:

  • 我不明白这个问题。客户端将向服务器发出 HTTP 请求。服务器拦截请求并相应地发送回复。
  • 我想你会得到页面 HTML 作为响应
  • 你的假设是正确的。节点服务器会简单地向${req.protocol}://${req.headers.host}/your/relative/route 发出一个新的 HTTP 请求,甚至不知道它最终会向自己发出请求。
  • @Booster2ooo,是的,当代码在客户端上运行时,就会发生这种情况。我想知道当我的节点快速服务器运行一行代码来生成 XMLHTTPRequest 时,它实际上是否只是通过 DNS 访问互联网并返回?
  • @idbehold 任何支持文档?或者这是常识,就像我在想的那样?总的来说,我想知道什么样的奇怪性能会受到影响,出去回到自己身边:) 我看过的其他框架,我可以在服务器上获取数据而不是在客户端上获取数据,因此忽略了这个问题。即进行 db 调用并填充状态,而不是使用任何一种方式进行 api 调用

标签: javascript node.js angular


【解决方案1】:

所有 cmets 都指向问题的答案,即您的服务器将联系 DNS 调用以返回并自行攻击。

因为好奇想了解性能,所以做了一个这样的测试:time curl -v http://[mydomain].us-east-1.elb.amazonaws.com/testedself

端点只是一个带有res.send('Hello World'); 的快速端点。在这个特定的测试中,额外的时间约为 10MS。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    相关资源
    最近更新 更多