http_options.response.headers doesnt work, atleast on V2

http_options.response.headers is a newish option for Fly
doesn’t work or ambiguous if global header change was observed Mar 2022 Changing X-Frame-Options to allow-from doesn't succeed in .toml file - #6 by fideloper-fly

doesnt work Apr 2022 New Feature: Basic HTTP response header modification

works Oct 2022 Format of `services.ports.http_options.response.headers` in `fly.toml`

broken jan 2023 Resource blocked due to MIME type mismatch

the breakage acknowledged ( How to remove headers from proxy response? - #2 by fideloper-fly (Apr 2023), then fixed ( Port services.ports.http_options to v2 apps by dangra · Pull Request #2169 · superfly/flyctl · GitHub Apr 2023 ), then more breakage from the community

So now in Aug 2023 I tried using it, made a test fly node project, GitHub - bulk88/ftest: flyio header test

# fly.toml app configuration file generated for ftest on 2023-08-23T21:23:47+08:00
# See for information about how to use this file.

app = "ftest"
primary_region = "ewr"


  PORT = "3000"

  internal_port = 3000
  force_https = true
  auto_stop_machines = true
  auto_start_machines = true
  min_machines_running = 0
  processes = ["app"]

  fly-request-id = false
  fly-wasnt-here = "yes, it was"
  multi-valued = ["value1", "value2"]

Echo-ing fly.toml back out shows it was parsed

root# fly config show
  "app": "ftest",
  "primary_region": "ewr",
  "env": {
    "PORT": "3000"
  "http_service": {
    "internal_port": 3000,
    "force_https": true,
    "auto_stop_machines": true,
    "auto_start_machines": true,
    "min_machines_running": 0,
    "processes": [
    "http_options": {
      "response": {
        "headers": {
          "fly-request-id": false,
          "fly-wasnt-here": "yes, it was",
          "multi-valued": [

I am using flyctl 0.1.84. These add/remove response header options have no effect for me on this basic sample project. I am on an IPv4 ISP connection, and since I am free/hobby tier, I know I have to be going through the Fly HTTP edge proxy. Can anyone else try to use http_options.response.headers and see if this feature works at all? I’d like to eliminate the static (and unimportant) server and via headers atleast if possible. Maybe fly-request-id also but I’d understand if thats a technical hard no for

Request URL:
Request Method: GET
Status Code: 200 
Remote Address:
Referrer Policy: strict-origin-when-cross-origin
content-encoding: gzip
content-type: text/html
date: Wed, 23 Aug 2023 23:04:54 GMT
fly-request-id: 01H8JA9K3RECZYZBJTS7KTY7SR-lga
server: Fly/0bc70000 (2023-08-16)
via: 2

Seems like someone at Fly pushed a magic button today, all of my apps suddenly are doing resp header modifications as designed in their fly.toml, but they are the changes from last night/hours ago. It seems that changing this field (http_service.http_options.response.headers) takes 12-36 hours after the deploy, to reach the fly edge proxy process, not seconds or minutes.

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.