httpd-gateway连接错误

好像是一样的

image

引号是英文的

image

不是 .1 的是 graphd 那个容器的地址呢?
像我的例子是 172.21.0.10

执行 docker ps -q | xargs -n 1 docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} {{ .Name }}' | sed 's/ \// /' 获得地址

$ docker ps -q | xargs -n 1 docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} {{ .Name }}' | sed 's/ \// /'

172.21.0.11 dev-nebula-http-gateway
172.22.0.4 nebula-graph-studio-v3_web_1
172.22.0.2 nebula-graph-studio-v3_importer_1
172.22.0.3 nebula-graph-studio-v3_client_1
172.21.0.8 nebula-docker-compose_graphd1_1
172.21.0.9 nebula-docker-compose_graphd2_1
172.21.0.10 nebula-docker-compose_graphd_1 #<--------------
172.21.0.6 nebula-docker-compose_storaged0_1
172.21.0.7 nebula-docker-compose_storaged2_1
172.21.0.5 nebula-docker-compose_storaged1_1
172.21.0.3 nebula-docker-compose_metad2_1
172.21.0.2 nebula-docker-compose_metad0_1
172.21.0.4 nebula-docker-compose_metad1_1

当然,如果不是为了编译 gateway 代码调试,可以不用 build,借助 studio 的 client 容器可能估计也可以
同时要保证 console 可以连 graphD

喔!可以连了!不过只是在git bash上,要是在Windows的cmd上还是连不了,那这样该怎么在JavaScript里面用fetch来连接呢?

git bash的结果

windows cmd的:

恭喜!Cheers!

win cmd 下把 127.0.0.1 改成 10.176.161.237 呢?因为是 listen 在 0.0.0.0:8080 的如果可以的话,浏览器里的 js 访问 10.176.161.237:8080 的 gw 应该是 ok的。

另外推荐把所有东西都跑在纯的 linux 里哈(可以弄一个专门的 VM 或者 WSL2),绕开 windows 环境一般比较节省时间 :stuck_out_tongue:

再就是,因为 cors 的原因,你可能还是需要一个反向代理,只需要保证反向代理(nginx) 的后端走的 gateway 地址是你能走的通的那一条就行

那個cors我用heroku可行嗎?現在的話我是建了一個heroku app,但是現在好像是連接不上http gateway,用curl試老是timed out,JavaScript上是一直沒有響應

下面这个截图不是已经连上了么?上面那个似乎地址也不对吧?

另外,nebula-http-gateway就是一个无状态的http服务,与技术栈无关的,所以一旦确认连通,无论用什么工具,只要是符合http请求,均是能连通的

heroku 的话应该不行吧,我不太熟悉 heroku 哈,我理解需要反代 http-gateway 使得他的 endpoint 和 studio 相同,才不会触发 cors? @jerry.liang

嗯嗯對,我用curl是能連接上了,現在我想在JavaScript裏面用fetch來試一下連接HTTP gateway。現在用fetch直接試著連接的話會報錯:

所以我在網上查了一下cors的解決方法,就看到有人說通過heroku anywhere來連,但是用了卻出現了連接超時的情況。前面多加的一串地址是我heroku app的地址

也可以参考 https://github.com/vesoft-inc/nebula-studio 的架构,直接用 node 做一个统一的后端,这样就不用从浏览器发起对 http-gateway 的请求,而是通过后端去访问 http-gateway,不涉及 CORS 了。

这个是cors的问题:

  • 要么你用在对应承载你前端的web容器里面做反向代理的处理
  • 要么你需要修改http-gateway来做互信
    其他也有跨域的解决方案,我推荐你用前面的
1 个赞

嗯嗯好的,用反向代理現在終於可以連上了!

2 个赞