连接到 Cloudflare 上的 Lightsail 应用程序遇到重定向循环

问题描述 投票:0回答:1

我的网络应用程序的前端无法连接到后端。后端托管在 AWS Lightsail 上,前端和后端 DNS 均使用 Cloudfront CDN 进行路由。

应用程序结构

  1. NodeJS 中的容器化应用程序,在 ExpressJS 上运行 HTTP 服务器(在端口 3000 上接收)
    • Allowed-Origin 设置为我网站的前端,
      https://frontend.domain.com
  2. 具有以下配置的 AWS Lightsail 容器部署:
    • 端口 3000 对 HTTP 协议开放
    • 默认公共域
      https://name.rng.region.cs.amazonlightsail.com
    • TLS证书验证已完成
  3. Cloudfront DNS CNAME 路由
    https://backend.domain.com
    到上述 Lightsail 公共域
    • 代理已启用
    • SSL/TLS加密模式灵活,并且启用始终使用HTTPS

我尝试过的事情

当前端

frontend.domain.com
尝试使用 fetch API 向后端
backend.domain.com
发送请求时,分析浏览器的网络检查器会发现:

  • ORIGIN 请求返回“CORS 未成功”
  • 后续POST请求发送并返回“NS_ERR_DOM_BAD_URI”
  • Lightsail 容器的日志中没有显示任何内容,表明 Lightsail 实例可能甚至没有收到请求。通常,成功的 ORIGIN 和 POST 请求都会显示在日志中,并带有 200 个返回码。

当我尝试通过浏览器直接连接到

backend.domain.com
时,我希望看到文本“运行状况检查成功!”,如果我直接通过 Lightsail 公共域 URI 进行连接,就会出现这种情况。相反,分析浏览器的网络检查器会发现发生了重定向循环。

请注意,在之前的开发过程中,我之前直接使用 Lightsail 公共域将请求从前端发送到后端,效果很好。

我怀疑这可能是 HTTP/HTTPS 配置的问题。我希望能更深入地解释我的配置出错的地方和原因,以及我应该采取哪些步骤来纠正错误。非常感谢!

amazon-web-services http https cloudflare amazon-lightsail
1个回答
0
投票

我怀疑 CORS 问题没有到达后端端点,但这是常见的行为。

您应该有两个端点。

  1. Cors 飞行前
map '/flight.xml' do
         run lambda { |env| [200, { 'Content-Type'  => 'application/xml',
      'Access-Control-Allow-Origin'            => '*',
      'Access-Control-Allow-Credentials'       => true,
      'AMP-Access-Control-Allow-Source-Origin' =>'https://frontend.domain.com'
    }, [.. web page... ]
end
  1. 您的后端端点
   map '/catalogo.json' do
     run lambda { |env| [200, { 'Content-Type'  => 'application/json',
      'Access-Control-Allow-Origin'            => '*',
      'Access-Control-Allow-Credentials'       => true,
      'AMP-Access-Control-Allow-Source-Origin' => 'https://endpoint.backend.com'
    }, [. web page..] 
  end
© www.soinside.com 2019 - 2024. All rights reserved.