Skip to content

Allow Origin header to be set (for non-browser platforms).#888

Merged
steveluscher merged 4 commits into
anza-xyz:mainfrom
prashanFOMO:prashan/allow-origin-header
Sep 16, 2025
Merged

Allow Origin header to be set (for non-browser platforms).#888
steveluscher merged 4 commits into
anza-xyz:mainfrom
prashanFOMO:prashan/allow-origin-header

Conversation

@prashanFOMO
Copy link
Copy Markdown
Contributor

@prashanFOMO prashanFOMO commented Sep 12, 2025

Problem

As described in the ticket, React Native clients do not automatically set an Origin header. This is preventing us from using Triton's SWQOS since it restricts access by Origin header.

Summary of Changes

Remove Origin from list of forbidden headers.

Fixes #887

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Sep 12, 2025

🦋 Changeset detected

Latest commit: 695dc5c

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 41 packages
Name Type
@solana/rpc-transport-http Minor
@solana/rpc-api Minor
@solana/rpc Minor
@solana/sysvars Minor
@solana/kit Minor
@solana/rpc-graphql Minor
@solana/transaction-confirmation Minor
@solana/accounts Minor
@solana/addresses Minor
@solana/assertions Minor
@solana/codecs-core Minor
@solana/codecs-data-structures Minor
@solana/codecs-numbers Minor
@solana/codecs-strings Minor
@solana/codecs Minor
@solana/compat Minor
@solana/errors Minor
@solana/fast-stable-stringify Minor
@solana/functional Minor
@solana/instruction-plans Minor
@solana/instructions Minor
@solana/keys Minor
@solana/nominal-types Minor
@solana/options Minor
@solana/programs Minor
@solana/promises Minor
@solana/react Minor
@solana/rpc-parsed-types Minor
@solana/rpc-spec-types Minor
@solana/rpc-spec Minor
@solana/rpc-subscriptions-api Minor
@solana/rpc-subscriptions-channel-websocket Minor
@solana/rpc-subscriptions-spec Minor
@solana/rpc-subscriptions Minor
@solana/rpc-transformers Minor
@solana/rpc-types Minor
@solana/signers Minor
@solana/subscribable Minor
@solana/transaction-messages Minor
@solana/transactions Minor
@solana/webcrypto-ed25519-polyfill Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Copy link
Copy Markdown
Contributor

@steveluscher steveluscher left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Take a look at what we did with Accept-Encoding to make it a runtime error when supplied in a non-Node context. Could you do something similar when Origin is supplied in a non-React-Native context? Should we actually allow Origin in all non-browser contexts, but make it a runtime error in browser contexts?

@prashanFOMO
Copy link
Copy Markdown
Contributor Author

@steveluscher thanks for the review! IMO it feels reasonable to allow this header across the board: browsers will just ignore it anyways + the use case I cite here could apply to any non-browser environment?

But won't die on this hill, happy to make the change if you'd like.

Copy link
Copy Markdown
Contributor

IMO it feels reasonable to allow this header across the board: browsers will just ignore it anyways…

The goal of the type system is to alert the developer of invalid inputs before they run their software, and the goal of runtime invariants is to alert them of invalid inputs the moment the call is made. Now type enforcement is not possible here just for browser builds, since TypeScript doesn't have the concept of ‘use these types for browser builds only,’ but if we take away the runtime enforcement then that will leave the developer on a treasure hunt for why their Origin header is having no effect. Failing loudly should shorten the gap between them shipping such a bug, and repairing it.

@prashanFOMO
Copy link
Copy Markdown
Contributor Author

prashanFOMO commented Sep 15, 2025

@steveluscher made the change - lmk if it looks good. will leave it to you to decide in the future whether this should be an error in Node envs, this change should unblock React Native users.

@steveluscher steveluscher self-requested a review September 15, 2025 21:50
Copy link
Copy Markdown
Contributor

@steveluscher steveluscher left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

@bundlemon
Copy link
Copy Markdown

bundlemon Bot commented Sep 15, 2025

BundleMon

Unchanged files (130)
Status Path Size Limits
@solana/kit production bundle
kit/dist/index.production.min.js
35.62KB -
rpc-graphql/dist/index.browser.mjs
18.82KB -
rpc-graphql/dist/index.native.mjs
18.81KB -
rpc-graphql/dist/index.node.mjs
18.81KB -
errors/dist/index.node.mjs
15.32KB -
errors/dist/index.browser.mjs
15.29KB -
errors/dist/index.native.mjs
15.29KB -
transaction-messages/dist/index.browser.mjs
7.16KB -
transaction-messages/dist/index.native.mjs
7.15KB -
transaction-messages/dist/index.node.mjs
7.15KB -
codecs-data-structures/dist/index.browser.mjs
4.69KB -
codecs-data-structures/dist/index.native.mjs
4.69KB -
codecs-data-structures/dist/index.node.mjs
4.69KB -
webcrypto-ed25519-polyfill/dist/index.node.mj
s
3.6KB -
webcrypto-ed25519-polyfill/dist/index.browser
.mjs
3.59KB -
webcrypto-ed25519-polyfill/dist/index.native.
mjs
3.57KB -
instruction-plans/dist/index.browser.mjs
3.42KB -
instruction-plans/dist/index.native.mjs
3.42KB -
instruction-plans/dist/index.node.mjs
3.41KB -
rpc-subscriptions/dist/index.browser.mjs
3.37KB -
rpc-subscriptions/dist/index.node.mjs
3.34KB -
codecs-core/dist/index.browser.mjs
3.31KB -
codecs-core/dist/index.native.mjs
3.31KB -
codecs-core/dist/index.node.mjs
3.31KB -
rpc-subscriptions/dist/index.native.mjs
3.31KB -
addresses/dist/index.browser.mjs
2.93KB -
rpc-transformers/dist/index.browser.mjs
2.93KB -
rpc-transformers/dist/index.native.mjs
2.93KB -
addresses/dist/index.native.mjs
2.93KB -
addresses/dist/index.node.mjs
2.93KB -
rpc-transformers/dist/index.node.mjs
2.93KB -
signers/dist/index.browser.mjs
2.63KB -
signers/dist/index.native.mjs
2.63KB -
signers/dist/index.node.mjs
2.62KB -
codecs-strings/dist/index.browser.mjs
2.53KB -
codecs-strings/dist/index.node.mjs
2.48KB -
codecs-strings/dist/index.native.mjs
2.45KB -
transaction-confirmation/dist/index.node.mjs
2.41KB -
transaction-confirmation/dist/index.native.mj
s
2.36KB -
transaction-confirmation/dist/index.browser.m
js
2.35KB -
sysvars/dist/index.browser.mjs
2.35KB -
sysvars/dist/index.native.mjs
2.34KB -
sysvars/dist/index.node.mjs
2.34KB -
transactions/dist/index.browser.mjs
2.31KB -
transactions/dist/index.native.mjs
2.31KB -
transactions/dist/index.node.mjs
2.3KB -
rpc-subscriptions-spec/dist/index.node.mjs
2.18KB -
rpc-subscriptions-spec/dist/index.native.mjs
2.13KB -
rpc-subscriptions-spec/dist/index.browser.mjs
2.13KB -
keys/dist/index.browser.mjs
2.02KB -
keys/dist/index.native.mjs
2.02KB -
keys/dist/index.node.mjs
2.02KB -
codecs-numbers/dist/index.native.mjs
2.01KB -
codecs-numbers/dist/index.browser.mjs
2.01KB -
codecs-numbers/dist/index.node.mjs
2.01KB -
react/dist/index.native.mjs
1.99KB -
react/dist/index.browser.mjs
1.99KB -
react/dist/index.node.mjs
1.99KB -
rpc/dist/index.node.mjs
1.95KB -
rpc-transport-http/dist/index.browser.mjs
1.91KB -
rpc-transport-http/dist/index.native.mjs
1.9KB -
rpc/dist/index.native.mjs
1.8KB -
subscribable/dist/index.node.mjs
1.8KB -
rpc/dist/index.browser.mjs
1.8KB -
subscribable/dist/index.native.mjs
1.75KB -
subscribable/dist/index.browser.mjs
1.74KB -
rpc-transport-http/dist/index.node.mjs
1.72KB -
kit/dist/index.browser.mjs
1.68KB -
kit/dist/index.native.mjs
1.68KB -
kit/dist/index.node.mjs
1.67KB -
rpc-types/dist/index.browser.mjs
1.53KB -
rpc-types/dist/index.native.mjs
1.53KB -
rpc-types/dist/index.node.mjs
1.53KB -
rpc-subscriptions-channel-websocket/dist/inde
x.node.mjs
1.33KB -
rpc-subscriptions-channel-websocket/dist/inde
x.native.mjs
1.27KB -
rpc-subscriptions-channel-websocket/dist/inde
x.browser.mjs
1.26KB -
options/dist/index.browser.mjs
1.18KB -
options/dist/index.native.mjs
1.18KB -
options/dist/index.node.mjs
1.17KB -
accounts/dist/index.browser.mjs
1.13KB -
accounts/dist/index.native.mjs
1.12KB -
accounts/dist/index.node.mjs
1.12KB -
rpc-api/dist/index.browser.mjs
976B -
rpc-api/dist/index.native.mjs
975B -
rpc-api/dist/index.node.mjs
973B -
compat/dist/index.browser.mjs
971B -
compat/dist/index.native.mjs
970B -
compat/dist/index.node.mjs
968B -
rpc-spec-types/dist/index.browser.mjs
962B -
rpc-spec-types/dist/index.native.mjs
961B -
rpc-spec-types/dist/index.node.mjs
959B -
rpc-subscriptions-api/dist/index.native.mjs
870B -
rpc-subscriptions-api/dist/index.node.mjs
869B -
rpc-subscriptions-api/dist/index.browser.mjs
868B -
rpc-spec/dist/index.browser.mjs
852B -
rpc-spec/dist/index.native.mjs
851B -
rpc-spec/dist/index.node.mjs
850B -
promises/dist/index.browser.mjs
799B -
promises/dist/index.native.mjs
798B -
promises/dist/index.node.mjs
797B -
assertions/dist/index.browser.mjs
783B -
instructions/dist/index.browser.mjs
769B -
instructions/dist/index.native.mjs
768B -
instructions/dist/index.node.mjs
767B -
fast-stable-stringify/dist/index.browser.mjs
726B -
fast-stable-stringify/dist/index.native.mjs
725B -
assertions/dist/index.native.mjs
724B -
fast-stable-stringify/dist/index.node.mjs
724B -
assertions/dist/index.node.mjs
723B -
programs/dist/index.browser.mjs
329B -
programs/dist/index.native.mjs
327B -
programs/dist/index.node.mjs
325B -
event-target-impl/dist/index.node.mjs
230B -
functional/dist/index.browser.mjs
154B -
functional/dist/index.native.mjs
152B -
text-encoding-impl/dist/index.native.mjs
152B -
functional/dist/index.node.mjs
151B -
codecs/dist/index.browser.mjs
137B -
codecs/dist/index.native.mjs
136B -
codecs/dist/index.node.mjs
134B -
event-target-impl/dist/index.browser.mjs
133B -
ws-impl/dist/index.node.mjs
131B -
text-encoding-impl/dist/index.browser.mjs
122B -
text-encoding-impl/dist/index.node.mjs
119B -
ws-impl/dist/index.browser.mjs
113B -
crypto-impl/dist/index.node.mjs
111B -
crypto-impl/dist/index.browser.mjs
109B -
rpc-parsed-types/dist/index.browser.mjs
66B -
rpc-parsed-types/dist/index.native.mjs
65B -
rpc-parsed-types/dist/index.node.mjs
63B -

Total files change +3B 0%

Final result: ✅

View report in BundleMon website ➡️


Current branch size history | Target branch size history

@steveluscher steveluscher merged commit 05970df into anza-xyz:main Sep 16, 2025
12 of 19 checks passed
@github-actions
Copy link
Copy Markdown
Contributor

🔎💬 Inkeep AI search and chat service is syncing content for source 'Solana Kit Docs'

@github-actions
Copy link
Copy Markdown
Contributor

Because there has been no activity on this PR for 14 days since it was merged, it has been automatically locked. Please open a new issue if it requires a follow up.

@github-actions github-actions Bot locked as resolved and limited conversation to collaborators Sep 30, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

"Origin" header is Forbidden - createSolanaRpc() not usable in React Native apps when Origin is required

2 participants