Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(buildToRequest): double slash path #779

Merged
merged 1 commit into from
Jan 24, 2024
Merged

fix(buildToRequest): double slash path #779

merged 1 commit into from
Jan 24, 2024

Conversation

aui
Copy link
Contributor

@aui aui commented Jan 24, 2024

This PR fixes the problem of missing origin with double slash paths.

new URL("//foo.com", "https://example.com");
// => 'https://foo.com/'

Copy link

changeset-bot bot commented Jan 24, 2024

⚠️ No Changeset found

Latest commit: 61e145e

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

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

Copy link

vercel bot commented Jan 24, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
edge-runtime ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jan 24, 2024 9:49am

@Kikobeats
Copy link
Member

Hello @aui, I'm not totally sure about this change. Ideally we want to respect URL constructor since that is the expected behavior by the specification:

new URL('//foo', 'http://localhost:53486')
URL {
  href: 'http://foo/',
  origin: 'http://foo',
  protocol: 'http:',
  username: '',
  password: '',
  host: 'foo',
  hostname: 'foo',
  port: '',
  pathname: '/',
  search: '',
  searchParams: URLSearchParams {},
  hash: ''
}

Can you explain how you got here? Why //foo.com is passed as relative URL?

@aui
Copy link
Contributor Author

aui commented Jan 24, 2024

@Kikobeats Sorry I didn't explain the question clearly.

The goal of buildToRequest seems to be to convert Node.js's IncomingMessage into a Web Request, but currently a URL like https://example.com//foo/ will be converted into https://foo/, which may cause program failure.

@Kikobeats Kikobeats merged commit b66247e into vercel:main Jan 24, 2024
8 checks passed
@Kikobeats
Copy link
Member

Thanks for the clarification, it makes sense to me 🙂

@aui
Copy link
Contributor Author

aui commented Jan 25, 2024

@Kikobeats Thank you for handling this issue quickly!

I found that this problem may be widespread. For example, the urlpattern-polyfill package that edge-runtime depends on does not seem to handle the double slash problem correctly.

Specific problem description: kenchris/urlpattern-polyfill#128

Issues with the urlpattern-polyfill package are beyond the content of the current PR, I'm commenting here just to document the relevance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants