Skip to content

Commit d789729

Browse files
rustyconoverclaude
andcommitted
Expose WWW-Authenticate and X-Request-ID in CORS headers (v0.6.2)
Browsers cannot read non-safelisted response headers from cross-origin responses unless they appear in Access-Control-Expose-Headers. Always expose WWW-Authenticate (needed for OAuth discovery from 401 responses) and X-Request-ID (for client-side debugging) when CORS is enabled. Also allow Authorization in request headers for Bearer token support. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 90ce155 commit d789729

3 files changed

Lines changed: 6 additions & 2 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@query-farm/vgi-rpc",
3-
"version": "0.6.1",
3+
"version": "0.6.2",
44
"license": "Apache-2.0",
55
"homepage": "https://vgi-rpc-typescript.query.farm",
66
"repository": {

src/http/handler.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ export function createHttpHandler(
8585
if (corsOrigins) {
8686
headers.set("Access-Control-Allow-Origin", corsOrigins);
8787
headers.set("Access-Control-Allow-Methods", "POST, OPTIONS");
88-
headers.set("Access-Control-Allow-Headers", "Content-Type");
88+
headers.set("Access-Control-Allow-Headers", "Content-Type, Authorization");
89+
headers.set("Access-Control-Expose-Headers", "WWW-Authenticate, X-Request-ID");
8990
}
9091
}
9192

test/http/handler.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,7 @@ describe("HTTP Handler", () => {
316316

317317
expect(res.status).toBe(200);
318318
expect(res.headers.get("Access-Control-Allow-Origin")).toBe("*");
319+
expect(res.headers.get("Access-Control-Expose-Headers")).toBe("WWW-Authenticate, X-Request-ID");
319320
});
320321

321322
test("CORS preflight", async () => {
@@ -329,6 +330,8 @@ describe("HTTP Handler", () => {
329330
expect(res.status).toBe(204);
330331
expect(res.headers.get("Access-Control-Allow-Origin")).toBe("*");
331332
expect(res.headers.get("Access-Control-Allow-Methods")).toBe("POST, OPTIONS");
333+
expect(res.headers.get("Access-Control-Allow-Headers")).toBe("Content-Type, Authorization");
334+
expect(res.headers.get("Access-Control-Expose-Headers")).toBe("WWW-Authenticate, X-Request-ID");
332335
});
333336

334337
// -- Producer stream --

0 commit comments

Comments
 (0)