0

我使用本指南设置了锯齿组。设置 sawtooth-seth 后,我尝试将其与 sawtooth -explorer连接。sawtooth-seth 和 sawtooth-explorer 在 docker 上成功运行。但是锯齿探险者没有与锯齿赛斯连接。我收到以下 cors 政策阻止错误。

Access to XMLHttpRequest at 'http://localhost:8080/transactions?limit=10' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
explorer.component.ts:210 Error fetching items from API (transactions):  

帮我解决这个错误。

4

1 回答 1

0

如果您尝试通过锯齿浏览器获取事务,您将在 Docker 容器中从 Nginx 收到“Bad Gateway 502”错误。

要解决 CORS 问题以通过 http 代理,您需要在 nginx.conf 文件中定义端口,以将 GET 请求发送到 Docker 容器中 nginx 的端口。

例如,如果您的 Sawtooth rest-api 连接到端口 8024,那么您可以配置 sawtooth-explorer-rest-api-proxy 以在 nginx.conf 文件中也使用端口 8024 来传递 http 代理。

这是从 docker-compose.yaml 文件中提取的 rest-api

docker-compose.yaml

rest-api:
    image: hyperledger/sawtooth-rest-api:1.0
    container_name: supply-rest-api
    expose:
      - 8008
    ports:
      - '8024:8008'
    depends_on:
      - validator
    entrypoint: |
      sawtooth-rest-api -vv
        --connect tcp://validator:4004
        --bind rest-api:8008

锯齿浏览器在 docker 文件夹中有相关的 nginx 配置。

nginx.conf

    server {
        listen 8090;
        add_header Pragma no-cache always;
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods 'GET, OPTIONS';
        add_header Access-Control-Allow-Headers 'X-XSRF-TOKEN,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';

        location / {
          #proxy_pass http://localhost:8008;
          proxy_pass http://192.168.3.10:8024;
          proxy_read_timeout 5000;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection $connection_upgrade;
        }
    }
于 2020-03-11T05:29:49.157 回答