1

我有一个 nodejs-express 服务器在Caddy 2服务器后面作为反向代理运行。

Caddy 在 docker 上运行,在 docker-compose 中具有以下配置

  caddy:
    image: caddy
    restart: always
    ports:
      - "443:443"
      - "80:80"
    networks:
      - main-network
    volumes:
      - "./Caddyfile:/etc/caddy/Caddyfile"

使用以下 Caddyfile:

my-nice-site.com {
  reverse_proxy /* server:4030
}

该设置在提供网页和 API 时运行良好,但是,当我尝试使用具有不同 ORIGIN 的 javascript 访问时,我遇到了 CORS 问题。

我已经使用 express cors 中间件在 express 服务器中设置了 CORS,并且在单独使用时它工作正常,但是在 Caddy 后面运行它时我一直得到它,所以我想我需要在我的 Caddyfile 中进行一些配置以允许cors 但我找不到任何适合我的设置的东西。

4

1 回答 1

2

我设法解决了我的问题:
通过 express 正确设置了标头,并且我在使用 curl 或 Postman 发出请求时得到了它们,而没有更改 Caddy 中的任何内容。

问题最终是我正在向 发出请求http,Caddy 正在将这些重定向到,这对于从 Postman 发送https的请求来说没有问题,但是Preflight-requests ( ) 不支持重定向,并且因为 Caddy 正在进行重定向,所以它不是到达快递(和 CORS 设置),抛出错误。GETOPTIONS

最后,解决方案只是提出我的要求https://my-nice-server.com

于 2020-06-15T09:47:10.707 回答