jjzjj

javascript - request.connection.remoteAddress 现在在 node.js 中以::ffff 为前缀

coder 2023-05-28 原文

我最近将我的路由器更改为由 Google 为 Google Fiber 提供的路由器(耶!),现在我注意到当我在本地服务器上开发时检查 request.connection.remoteAddress 时看到的内容发生了变化。以前,我曾经看到过:

request.connection.remoteAddress; // 192.168.1.10

现在我看到了:

request.connection.remoteAddress; // ::ffff:192.168.1.10
  1. 谁能解释发生了什么?
  2. 我的 Node 服务器是否在监听 IPv6 地址?
  3. ::ffff:192.168.1.10 究竟是 IPv6 地址还是 IPv4 地址?
  4. 判断一个 remoteAddress 是否是 IPv6 以检查字符串是否包含 :: 是最简单的方法吗?
  5. 在数据库中存储 IPv4 地址时,我曾经使用类似 INET_ATON 之类的东西将它们更改为大整数。我是否应该放弃这一点并将所有远程地址存储为长度为 45 个字符的字符串(IPv6 地址字符串的最大长度)

最佳答案

Is my Node server listening to IPv6 addresses?

是的。您的服务器正在监听 IPv6 连接,并且未设置 IPV6_V6ONLY 标志,结果 IPv4 连接由同一个套接字处理。您可以在 this question 中阅读更多关于此标志的信息。 .

在这种情况下,IPv6 连接是否可能(可以路由到您的服务器)是无关紧要的 - 重要的是 IPv4 连接由监听 IPv6 连接的套接字接收。

Is ::ffff:192.168.1.10 actually an IPv6 address or is it an IPv4 address?

两者兼而有之。 IPv6 地址可以嵌入 IPv4 地址 - 这是这些嵌入地址之一。见 IPv4-mapped IPv6 addresses .

Is the easiest way to tell if a remoteAddress is IPv6 to check if the string contains ::?

IPv6 地址不一定包含 ::,它是一个简短的符号,表示一些零个数。 ::ffff:192.168.1.10 等价于 0:0:0:0:0:ffff:192.168.1.100:0:0:0 :0:ffff:c0a8:010a(见 IPv6 address presentation)。因此,为了区分 IPv6 和 IPv4 地址,您只需检查一个冒号 - :.

When storing IPv4 addresses in the database I used to use something like INET_ATON to change them into large integers. Should I abandon this and just store all remote addresses as strings that can be 45 characters long (maximum length of an IPv6 address string)

IPv6 地址是一个 128 位的数字 - 即使您可以将其存储为数字(例如,在 MySQL 中作为两个 BIGINT 数字),这种方法是否真的有意义仍然值得怀疑。我能想到的唯一需要处理数字的场景是评估子网掩码,对于其他所有情况,字符串就足够且更易于处理。

关于javascript - request.connection.remoteAddress 现在在 node.js 中以::ffff 为前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24896386/

有关javascript - request.connection.remoteAddress 现在在 node.js 中以::ffff 为前缀的更多相关文章

  1. ruby-on-rails - 我更新了 ruby​​ gems,现在到处都收到解析树错误和弃用警告! - 2

    简而言之错误:NOTE:Gem::SourceIndex#add_specisdeprecated,useSpecification.add_spec.Itwillberemovedonorafter2011-11-01.Gem::SourceIndex#add_speccalledfrom/opt/local/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:91./opt/local/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/rails/gem_dependency.rb:275:in`==':und

  2. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  3. ruby-on-rails - 使用 javascript 更改数据方法不会更改 ajax 调用用户的什么方法? - 2

    我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的

  4. ruby - Controller 中的 request.cookies 和 cookies 有什么区别? - 2

    request.cookies和RubyonRails中的cookies对象有区别吗?我目前正在尝试将带有cookie的请求从我的node.js服务器发送到我的ROR4应用程序。似乎在ROR应用程序中,request.cookies包含我发送的cookie,但是cookies对象(现有逻辑所基于的对象)没有它。我已经搜索了文档,但找不到任何相关内容。我错过了什么吗?感谢您的帮助。 最佳答案 理想情况下,request.cookies和cookies应该相同。但是,在POST(创建操作)请求中,rails会验证XSRFtoken。如果

  5. ruby HTTPClient : How to use persistent connections? - 2

    如何通过HTTPClient使用持久HTTP连接?发送HTTP请求时是否只是设置KeepAlive的问题?文档指出支持持久连接,但没有告诉我们如何使用它们。 最佳答案 是availableinNet::HTTP如文档中所写,Net::HTTP.startimmediatelycreatesaconnectiontoanHTTPserverwhichiskeptopenforthedurationoftheblock.Theconnectionwillremainopenformultiplerequestsintheblockift

  6. ruby-on-rails - "undefined method ` stub_request '"访问 RSpec 支持文件中的方法时 - 2

    我的Ruby-on-Rails项目中有以下文件结构,用于规范:/spec/msd/serviceservice_spec.rb/support/my_modulerequests_stubs.rb我的request_stubs.rb有:moduleMyModule::RequestsStubsmodule_functiondeflist_clientsurl="dummysite.com/clients"stub_request(:get,url).to_return(status:200,body:"clientsbody")endend在我的service_spec.rb我有:re

  7. ruby-on-rails - 我现在(2010 年 1 月)应该使用哪个版本的 Ruby? - 2

    我有1.8.6附带的VanillaMacOSXLeopard。我是RoR的新手,所以会学习网上的教程。在使用更高版本的Ruby时,我是否可能会发现遵循它们的问题?我目前正在查看提到1.8.6和1.8.7的这个-http://www.railstutorial.org/book 最佳答案 RoR教程对两者都适用,但如果您正在学习Ruby,则应该学习1.9。Rails3将不支持1.8.6,所以我会选择1.8.7或1.9。我还推荐使用RVM在Ruby版本之间切换。 关于ruby-on-rail

  8. ruby-on-rails - Assets 管道损坏 : Not compiling on the fly css and js files - 2

    我开始了一个新的Rails3.2.5项目,Assets管道不再工作了。CSS和Javascript文件不再编译。这是尝试生成Assets时日志的输出:StartedGET"/assets/application.css?body=1"for127.0.0.1at2012-06-1623:59:11-0700Servedasset/application.css-200OK(0ms)[2012-06-1623:59:11]ERRORNoMethodError:undefinedmethod`each'fornil:NilClass/Users/greg/.rbenv/versions/1

  9. ruby-on-rails - Rails - 理解 application.js 和 application.css - 2

    rails新手。只是想了解\assests目录中的这两个文件。例如,application.js文件有如下行://=requirejquery//=requirejquery_ujs//=require_tree.我理解require_tree。只是将所有JS文件添加到当前目录中。根据上下文,我可以看出requirejquery添加了jQuery库。但是它从哪里得到这些jQuery库呢?我没有在我的Assets文件夹中看到任何jquery.js文件——或者直接在我的整个应用程序中没有看到任何jquery.js文件?同样,我正在按照一些说明安装TwitterBootstrap(http:

  10. ruby - 在 Mechanize 中使用 JavaScript 单击链接 - 2

    我有这个:AccountSummary我想单击该链接,但在使用link_to时出现错误。我试过:bot.click(page.link_with(:href=>/menu_home/))bot.click(page.link_with(:class=>'top_level_active'))bot.click(page.link_with(:href=>/AccountSummary/))我得到的错误是:NoMethodError:nil:NilClass的未定义方法“[]” 最佳答案 那是一个javascript链接。Mechan

随机推荐