【问题标题】:cloudflare worker rewrite Host Headercloudflare worker 重写主机头
【发布时间】:2020-04-18 23:51:53
【问题描述】:

如何在 cloudflare worker 中设置另一个 Host Header? 比如我为我网站的www记录设置了一个1.2.3.4的ip 默认情况下,www 请求使用标头 www.ex.com 发送,但我想使用 new.ex.com 标头发送 www 请求

【问题讨论】:

  • 只需为指向 www.ex.com 的名称 new.ex.com 创建一个 CNAME 记录,您无需更改主机头,只需将您的请求直接发送到 new。 ex.com。如果 DNS 记录指向其他地方,那么您需要在 @KentonVarda 答案中使用 resolveOverride。但无论哪种方式,您都需要拥有 new.ex.com 的 DNS 记录才能正常工作。如果您不希望 new.ex.com 解析为可用 IP,您可以创建值为 100:: 的 AAAA 记录

标签: cloudflare cloudflare-workers


【解决方案1】:

您需要为new.ex.com 配置DNS 记录,使其指向相同的IP 地址。然后,您可以在 URL 中使用new.ex.com 发出fetch() 请求。

如果您无法使new.ex.com 指向正确的 IP,另一种方法是使用 resolveOverride 选项发出 fetch() 请求以指定要使用的不同主机名的 IP 地址:

fetch("https://new.ex.com", {cf: {resolveOverride: "www.ex.com"}});

请注意,这仅在涉及的两个主机名都在您的区域下时才有效。 Documentation about resolveOverride can be found here.

您不能直接设置 Host 标头,因为这样做可能会在向同样使用 Cloudflare 的第三方服务器发出请求时绕过安全设置。

【讨论】:

  • 您好 Kenton,是否可以使用此工作人员允许我通过 IP 地址访问我的网络服务器?例如,如果用户在 chrome 中键入 https://123.123.123.123,它将从 www.my-domain-url.com 获取它?
【解决方案2】:
// Parse the URL.
let url = new URL(request.url)

// Change the hostname.
url.hostname = "check-server.example.com"

// Construct a new request
request = new Request(url, request)

请注意,这会影响源看到的 Host 标头 (它将是 check-server.example.com)。有时人们希望 Host 标头保持不变。

// Tell Cloudflare to connect to `check-server.example.com`
// instead of the hostname specified in the URL.

request = new Request(request,
    {cf: {resolveOverride: "check-server.example.com"}})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2023-01-14
    • 1970-01-01
    • 2021-12-21
    相关资源
    最近更新 更多