无法执行从一个泊坞窗映像到另一个泊坞窗映像的API请求

我正在一个有React前端和Java Spring后端的应用程序上工作。我有一个简单的API调用,我想在其中返回一个新地址。我已经通过使用单独的容器执行curl命令来验证了这项工作docker container run --rm -it --net multichain-network byrnedo/alpine-curl http://multichain-api:8080/api/blockchain/address/create该调用返回预期结果。

现在,我已经使用创建了我的docker环境docker-compose,它们都已启动并正在运行,并且可以相互ping通

version: "3.7"

networks:
  multichain-network:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.18.0.0/16
    name: multichain-network

services:
  multichain-api:
    build:
      context: ./blockchain
    networks:
      - multichain-network
    ports:
      - "8080:8080"
    volumes:
      - type: bind
        source: ${PWD}/blockchain/target
        target: /target
    container_name: multichain-api

  frontend:
    build:
      context: ./frontend
    networks:
      - multichain-network
    ports:
      - "3000:3000"
    volumes:
      - type: bind
        source: ${PWD}/frontend
        target: /frontend
    container_name: frontend

我现在还很陌生,所以我想知道这是否可以在我的代码中完成,因此这是进行调用的代码段;

getNewAddress = () => {
    console.log("Button clicked");
    axios.get('http://multichain-api:8080/api/blockchain/address/create')
        .then(function (response) {
            console.log("getting new address");
            this.setState({newAddress: response.data});
            console.log(this.state.newAddress);
        })
        .catch(function (error) {
            console.log(error);
        })
}

您会在呼叫中注意到,我直接呼叫的是容器名称,而不是IP地址。我这样做是因为它们都位于一个网络中,当我使用容器名称从前端ping后端容器时,它可以工作;

docker exec frontend ping multichain-api
PING multichain-api (172.18.0.4): 56 data bytes
64 bytes from 172.18.0.4: seq=0 ttl=64 time=0.295 ms
64 bytes from 172.18.0.4: seq=1 ttl=64 time=0.158 ms
64 bytes from 172.18.0.4: seq=2 ttl=64 time=0.253 ms

当我的代码尝试进行调用时,这是在开发控制台上产生的错误;

VM2194:1 GET http://multichain-api:8080/api/blockchain/address/create 0 ()
(anonymous) @ VM2194:1
dispatchXhrRequest @ xhr.js:178
xhrAdapter @ xhr.js:12
dispatchRequest @ dispatchRequest.js:59
Promise.then (async)
request @ Axios.js:51
Axios.(anonymous function) @ Axios.js:61
wrap @ bind.js:9
Container._this.getNewAddress @ Container.js:12
apply @ _apply.js:15
baseInvoke @ _baseInvoke.js:21
apply @ _apply.js:16
(anonymous) @ _overRest.js:32
(anonymous) @ Button.js:74
callCallback @ react-dom.development.js:100
invokeGuardedCallbackDev @ react-dom.development.js:138
invokeGuardedCallback @ react-dom.development.js:187
invokeGuardedCallbackAndCatchFirstError @ react-dom.development.js:201
executeDispatch @ react-dom.development.js:461
executeDispatchesInOrder @ react-dom.development.js:483
executeDispatchesAndRelease @ react-dom.development.js:581
executeDispatchesAndReleaseTopLevel @ react-dom.development.js:592
forEachAccumulated @ react-dom.development.js:562
runEventsInBatch @ react-dom.development.js:723
runExtractedEventsInBatch @ react-dom.development.js:732
handleTopLevel @ react-dom.development.js:4477
batchedUpdates$1 @ react-dom.development.js:16660
batchedUpdates @ react-dom.development.js:2131
dispatchEvent @ react-dom.development.js:4556
interactiveUpdates$1 @ react-dom.development.js:16715
interactiveUpdates @ react-dom.development.js:2150
dispatchInteractiveEvent @ react-dom.development.js:4533
Container.js:19 Error: Network Error
    at createError (createError.js:16)
    at XMLHttpRequest.handleError (xhr.js:87)

请注意,我使用的浏览器是Chromium版本68.0.3440.106。总而言之,我不确定这是React,docker还是浏览器问题。查看我的后端应用程序的日志,当前端进行呼叫时,没有记录任何活动,因此就好像没有被击中。

任何对此的见解都会很棒

更新资料

我在Firefox上进行了此测试,以查看是否是浏览器问题,并且那里的开发控制台应该提供更多信息;

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://multichain-api:8080/api/blockchain/test. (Reason: CORS request did not succeed).

凯文·努尔丁(Kayvan Nouredin)

您有一个cors问题,而不是docker问题。它说,发出请求的服务器的原始域(frontend-react)和服务器的原始域(backend-multichain-api)是不同的,您可以在此处找到cors系统拱

为了在后端服务器中解决此问题,您应该告诉服务器接受来自不同域的请求。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何连接到MySQL与泊坞窗创建到另一个端口(不是端口3306)?

如何安装SQL Server Java驱动程序到一个Linux泊坞窗容器?

泊坞窗图像死后“得到了一个错误读出的通信数据包”

驻留集大小(RSS)和一个Java的JVM总提交的内存(NMT)之间的差异泊坞窗容器中运行

泊坞窗无法拉-连接被拒绝

无法从最新(7.0.1)泊坞窗映像调试Keycloak

泊坞窗重新启动容器失败:“已在使用中”,但是没有更多泊坞窗映像

创建了一个可安装nginx,python,uwsgi和django的泊坞窗。如何在VM中进行测试?

如何找到泊坞窗映像的CMD命令?

泊坞窗撰写:重建一个链接的容器中断了nginx的上游

如何指定一个共享泊坞窗卷的大小?

一个泊坞窗用户可以向另一个隐藏数据吗?

父泊坞窗中的CMD是否被子泊坞窗映像中的CMD / ENTRYPOINT覆盖?

泊坞窗无法构建scipy

Jenkinsfile泊坞窗

无法从Minikube泊坞窗提取图像

泊坞窗无法使用https导航到网站

如果泊坞窗更新了其Linux内核,是否会破坏现有的泊坞窗映像?

泊坞窗:创建一个mongodb卷,在docker-compose down之后仍保存吗?

Tensorflow:泊坞窗映像和-gpu后缀

无法访问泊坞窗映像中的React应用程序

如何更新Pgadmin4泊坞窗映像?

泊坞窗无法从DockFile启动服务

重新执行退出的泊坞窗会话

无法拉泊坞窗映像

泊坞窗无法指定容器连接

泊坞窗内的泊坞窗

无法删除泊坞窗图像

我怎么可以连接到一个码头工人桌面虚拟机在Mac上?(泊坞窗桌面版2.4)