Allow spin.alt
host for self-requests
#3003
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a proposal to address fermyon/spin-js-sdk#298.
The issue there is that JS guests use the inbuilt
fetch
function to make HTTP requests. Iffetch
sees a URL without a host, it helpfully prepends the host it thinks it's running on before letting Spin see it. So for a self-request such asfetch("/back")
, Spin seeshttp://localhost:3000/back
or whatever. Which is not on the allow list so gets the banhammer.This PR reluctantly compromises with
fetch
by allowing self-requests via the pseudo-hostself.alt
. So if you dofetch("http://self.alt/back")
, Spin will treat it as a self-request: it will validate permission using the self-request permission and route it as a self request.The developer experience is, admittedly, not very lovely. But it hopefully gives JS folks an escape hatch.
Notes for reviewers:
allowed_outbound_hosts = ["http://self"]
, nothttp://self.alt
. Should we allowself.alt
as another way of expressing the same permission?