本文将为您提供关于提取API不适用于localhost/127.0.0.1的详细介绍,我们还将为您解释api提取是什么意思的相关知识,同时,我们还将为您提供关于0.0.0.0、127.0.0.1和lo
本文将为您提供关于提取API不适用于localhost / 127.0.0.1的详细介绍,我们还将为您解释api提取是什么意思的相关知识,同时,我们还将为您提供关于0.0.0.0、127.0.0.1 和 localhost 有什么区别?、0.0.0.0、127.0.0.1和localhost之间的区别、127.0.0.1 和 localhost 有什么区别、127.0.0.1、localhost、0.0.0.0 的区别的实用信息。
本文目录一览:- 提取API不适用于localhost / 127.0.0.1(api提取是什么意思)
- 0.0.0.0、127.0.0.1 和 localhost 有什么区别?
- 0.0.0.0、127.0.0.1和localhost之间的区别
- 127.0.0.1 和 localhost 有什么区别
- 127.0.0.1、localhost、0.0.0.0 的区别
提取API不适用于localhost / 127.0.0.1(api提取是什么意思)
就像背景一样,我有一个坐在远程EC2
Ubuntu实例上的react应用。同一台服务器还运行一个监听8080端口的Go应用程序(该端口已从“安全性”设置中向所有人开放)。
我正在尝试通过React应用程序使用Fetch API发出请求,如下所示:
var bearer = ''Bearer ...''return fetch(''http://localhost:8080/home'', { headers: new Headers({ ''Authorization'': bearer })})
从Chrome和Firefox的控制台中,我得到:
尝试提取资源时出现TypeError:NetworkError
当我用代替时localhost
,也是如此127.0.0.1
。
但是,使用EC2实例的外部IP是可行的(并且由于“ Authorization”标头而触发了CORS请求,该请求由服务器进行了平稳处理)。
在后一种情况下,我还可以看到服务器记录了OPTIONS和GET的传入请求(在前一种情况下,这两种方法都没有日志)。
我还尝试了从EC2机器到CURL的访问,localhost
并且该请求有效地通过了,这使我认为使用Fetch API根本不会触发该请求。
任何意见,将不胜感激。如果我做错了什么,请指出正确的方向。
答案1
小编典典在编写时localhost
,由于js
代码正在浏览器中运行,因此它会调用(本地)浏览器所在的(本地)机器。
您应该为您的API端点创建一个域/子域,并使用它代替localhost,或者继续使用硬编码的IP地址。
您还应该只在允许的后端来源中允许您的前端网站域。例如
您的网站可以是www.example.com
,后端URL可以是www.api.example.com
。您只能允许www.example.com
,origin
因为可以通过进行投放www.api.example.com
。您将需要在后端进行配置。
0.0.0.0、127.0.0.1 和 localhost 有什么区别?
我在我的 Mac 上使用Jekyll
and 。Vagrant
我发现Jekyll
server
它将绑定到0.0.0.0:4000
而不是127.0.0.1:4000
. 默认gem
server
情况下也会绑定到这个地址。我仍然可以通过http://localhost:port
. 但是对于Jekyll
, 似乎默认设置(例如
0.0.0.0:4000)需要 Internet 访问。Jekyll server
没有互联网我无法运行。这是一个小错误吗?
我也用Vagrant
. 我在 Vagrantfile 中设置了端口转发(8080 =>
4000),因为我安装Jekyll
在Vagrant
虚拟机中并在 Macintosh
下测试它。如果我使用默认设置(0.0.0.0:4000),它可以工作。我可以从我的 safari
访问它http://localhost:8080
。但如果没有互联网,我无法绑定到 0.0.0.0:4000。我使用jekyll server -H
127.0.0.1
绑定服务来127.0.0.1:4000
代替,然后我无法通过http://localhost:8080
.
谁能 解释 0.0.0.0、127.0.0.1 和 localhost 之间的区别 ?谁能 解释为什么差异会导致这个问题 ?
0.0.0.0、127.0.0.1和localhost之间的区别
0.0.0.0和127.0.0.1
共同点:
- 都属于特殊地址。
- 都属于A类地址。
- 都是IPV4地址。
区别:
- 在服务器中,0.0.0.0指的是本机上的所有IPV4地址,,如果我绑定的端口指定了0.0.0.0,那么通过内网地址或外网地址都可以访问我的应用。但是如果我只绑定了内网地址,那么通过外网地址就不能访问,所以如果绑定0.0.0.0,也有一定安全隐患,对于只需要内网访问的服务,可以只绑定内网地址。
- 在路由中,0.0.0.0表示的是默认路由,即当路由表中完全没有找到完全匹配的路由的时候所对应的路由。
用途
- 回环测试,通过使用ping 127.0.0.1 测试某台机器上的网络设备,操作系统或者TCP/IP实现是否工作正常。
- DDos攻击防御:网站收到DDos攻击之后,将域名A记录到127.0.0.1,即让攻击者自己攻击自己。
- 大部分Web容器测试的时候绑定的本机地址。
localhost
localhost其实是个域名,而不是一个ip地址。之所以我们经常把localhost与127.0.0.1认为是同一个是因为我们使用的大多数系统上都默认localhost指向了127.0.0.1这个地址。
在linux系统中,/ets/hosts文件中都会有如下内容:
总结
127.0.0.1是一个环回地址或仅本地接口的ip地址(从该接口发送出去,双从该接口接收回来)。
127.0.0.1 和 localhost 有什么区别
假设在 中定义了以下内容.../hosts
:
127.0.0.1 localhost
如果有的话,使用127.0.0.1
和localhost
作为服务器名称之间的实际区别是什么,尤其是在访问本地运行的正在侦听连接的进程时?
答案1
小编典典好吧,最可能的区别是您仍然需要对某个地方进行实际 查找localhost
。
如果您使用127.0.0.1
,那么(智能)软件将直接将其转换为 IP
地址并使用它。的一些实现gethostbyname
将检测点格式(并且可能是等效的 IPv6 格式)并且根本不进行查找。
否则,必须解析名称。并且无法保证您的hosts
文件实际上将 用于 该分辨率(首先或根本),因此localhost
可能会成为完全 不同 的IP
地址。
hosts
我的意思是,在某些系统上,可以绕过本地文件。该host.conf
文件在
Linux(和许多其他 Unices)上控制它。
127.0.0.1、localhost、0.0.0.0 的区别
在开发 web 应用的测试环境中,如果希望同一个局域网的同事通过内网 IP 访问自己的应用,则需要把 web 服务监听的 ip 地址改为 0.0.0.0。为什么用 127.0.0.1 不行,而用 0.0.0.0 就可以呢?
flask 文档有提到
app.run(host=''0.0.0.0'')
会让操作系统监听所有的公网 ip。在服务器中,0.0.0.0 指的是本机上的所有 IPV4 地址,如果一个主机有两个 IP 地址,192.168.1.1 和 10.1.2.1,并且该主机上的一个服务监听的地址是 0.0.0.0,那么通过两个 ip 地址都能够访问该服务。 一般我们自己的机器都会有防火墙之类的东西阻止非此局域网的 IP 访问,所以测试时才需要其他人的机器与自己接入同一个局域网。
而作为 IP 地址,0.0.0.0 意味着 “这个网络” 或者 “这个主机”,全 0 的 IP 地址作为网络号指的是当前网络。0.0.0.0 允许机器在不知道网络号的情况下访问自己所在的网络。
因此,当我们在本地启动 flask 应用时,在浏览器输入 0.0.0.0:5000,无论有无接入互联网都可以访问 flask 应用,因为机器访问的是自己所在的网络。
所有 127.xx.yy.zz 形式的地址保留给回环测试用,发送到该地址的数据包并没有被真正放在线路上,它们如同入境数据包一样在本地处理。
而 127.0.0.1 是一个回环地址,通过这个地址我们只能访问发出此次访问的同一台主机,目的地址为 “127.0.0.1” 的数据包不会通过网关,因此该数据包不会出现在网络传输过程中。如果一个服务监听 127.0.0.1,其实它只监听本机对此服务的访问。
localhost 是一个别名,默认表示 IP 地址 127.0.0.1,也可以在 /etc/hosts 中设置为其他 IP 地址。在终端 ping localhost 可以看到 localhost 被解析为 127.0.0.1
MacBook-Pro-2:~ zixiluo$ ping localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.036 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.081 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.084 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.082 ms
关于提取API不适用于localhost / 127.0.0.1和api提取是什么意思的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于0.0.0.0、127.0.0.1 和 localhost 有什么区别?、0.0.0.0、127.0.0.1和localhost之间的区别、127.0.0.1 和 localhost 有什么区别、127.0.0.1、localhost、0.0.0.0 的区别等相关内容,可以在本站寻找。
本文标签: