【问题标题】:CORS problems when using Caddy 2 and express使用 Caddy 2 和 express 时的 CORS 问题
【发布时间】:2020-10-03 05:29:23
【问题描述】:

我有一个 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 middleware 在 express 服务器中设置了 CORS,并且它在单独使用时可以正常工作,但是在 Caddy 后面运行它时我一直得到这个,所以我想我需要进行一些配置我的 Caddyfile 允许 cors,但我找不到任何适合我的设置的东西。

【问题讨论】:

    标签: express cors caddy caddyfile


    【解决方案1】:

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

    问题最终是我向 http 发出请求,Caddy 将这些请求重定向到 https,这对于从 Postman 发送的 GET 请求来说没有问题,但 Preflight-requests (OPTIONS) 可以不支持重定向,并且由于 Caddy 进行重定向,它没有到达 express(和 CORS 设置),引发错误。

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

    【讨论】:

    • 这正是我的问题。愚蠢的事情,很容易忘记检查。谢谢!
    猜你喜欢
    • 2019-01-12
    • 1970-01-01
    • 2021-04-10
    • 2021-03-17
    • 1970-01-01
    • 2020-03-21
    • 2016-05-05
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多