feat: add host_header config for Docker networking
All checks were successful
Build and Push Docker Image / build (push) Successful in 14s
All checks were successful
Build and Push Docker Image / build (push) Successful in 14s
When Grist validates the Host header (common with reverse proxy setups), internal Docker networking fails because requests arrive with Host: container-name instead of the external domain. The new host_header config option allows overriding the Host header sent to Grist while still connecting via internal Docker hostnames.
This commit is contained in:
@@ -23,6 +23,14 @@ documents:
|
||||
doc_id: pN0zE5sT2qP7x
|
||||
api_key: ${GRIST_PERSONAL_API_KEY}
|
||||
|
||||
# Docker networking example: connect via internal hostname,
|
||||
# but send the external domain in the Host header
|
||||
docker-grist:
|
||||
url: http://grist:8080
|
||||
doc_id: abc123
|
||||
api_key: ${GRIST_API_KEY}
|
||||
host_header: grist.example.com # Required when Grist validates Host header
|
||||
|
||||
# Agent tokens with access scopes
|
||||
tokens:
|
||||
- token: REPLACE_WITH_GENERATED_TOKEN
|
||||
|
||||
@@ -14,6 +14,7 @@ class Document:
|
||||
url: str
|
||||
doc_id: str
|
||||
api_key: str
|
||||
host_header: str | None = None # Override Host header for Docker networking
|
||||
|
||||
|
||||
@dataclass
|
||||
@@ -78,6 +79,7 @@ def load_config(config_path: str) -> Config:
|
||||
url=doc_data["url"],
|
||||
doc_id=doc_data["doc_id"],
|
||||
api_key=doc_data["api_key"],
|
||||
host_header=doc_data.get("host_header"),
|
||||
)
|
||||
|
||||
# Parse tokens
|
||||
|
||||
@@ -17,6 +17,8 @@ class GristClient:
|
||||
self._doc = document
|
||||
self._base_url = f"{document.url.rstrip('/')}/api/docs/{document.doc_id}"
|
||||
self._headers = {"Authorization": f"Bearer {document.api_key}"}
|
||||
if document.host_header:
|
||||
self._headers["Host"] = document.host_header
|
||||
self._timeout = timeout
|
||||
|
||||
async def _request(self, method: str, path: str, **kwargs) -> dict:
|
||||
|
||||
Reference in New Issue
Block a user