使用 Caddy 2 和 express 时的 CORS 问题
CORS problems when using Caddy 2 and express
我在 Caddy 2 服务器后面有一个 nodejs-express 服务器 运行 作为反向代理。
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 但我找不到适合我的设置的任何配置。
我设法解决了我的问题:
headers 由 express 正确设置,我在使用 curl 或 Postman 发出请求时得到了它们,而没有在 Caddy 中进行任何更改。
问题最终是我正在向 http
发出请求,Caddy 将这些重定向到 https
,这对于从 Postman 发送的 GET
请求没有问题,但是 Preflight-requests (OPTIONS
) 不支持重定向,因为 Caddy 正在进行重定向,它没有到达 express(和 CORS 设置),抛出错误。
最后,解决方案只是向 https://my-nice-server.com
提出我的请求
我在 Caddy 2 服务器后面有一个 nodejs-express 服务器 运行 作为反向代理。
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 但我找不到适合我的设置的任何配置。
我设法解决了我的问题:
headers 由 express 正确设置,我在使用 curl 或 Postman 发出请求时得到了它们,而没有在 Caddy 中进行任何更改。
问题最终是我正在向 http
发出请求,Caddy 将这些重定向到 https
,这对于从 Postman 发送的 GET
请求没有问题,但是 Preflight-requests (OPTIONS
) 不支持重定向,因为 Caddy 正在进行重定向,它没有到达 express(和 CORS 设置),抛出错误。
最后,解决方案只是向 https://my-nice-server.com