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(history): Resolve the href in <base> correctly (#3819) #3823

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from

Conversation

ichaoX
Copy link

@ichaoX ichaoX commented Jan 11, 2023

  • Resolve the href in <base> correctly.

  • In hash mode, the hash in base is automatically removed and the base trailing slash is distinguished.

  • By default the result of router.resolve().href is the same as the actual switched URL.

Relates to: #3819, #2865

@netlify
Copy link

netlify bot commented Jan 11, 2023

Deploy Preview for vue-router-docs-v3 canceled.

Name Link
🔨 Latest commit 992fd4b
🔍 Latest deploy log https://app.netlify.com/sites/vue-router-docs-v3/deploys/646e0bb050065c00085989b1

@posva
Copy link
Member

posva commented Jan 12, 2023

Thanks for the PR. Can you provide a failing test or boiled-down repro? Note a base should not contain a hash

@ichaoX
Copy link
Author

ichaoX commented Jan 12, 2023

An example of reproduction can be found in #3819, and you can view the source code of the Reproduction link.

Some browser extensions or proxies may modify <base>, and as a standard feature of html, it is necessary to support it correctly.

This PR should implement support for almost all legal baseURIs.
The <base> tag is then respected after ensuring the prerequisites of availability and consistency .
Support base.href containing relative URI or hash, even cross-origin cases.

@posva
Copy link
Member

posva commented Jan 12, 2023

That base has a hash though. As I said, it cannot have a hash

@ichaoX
Copy link
Author

ichaoX commented Jan 12, 2023

That reproduction link contains several mistakes at the same time:

  1. incorrect relative path
  2. incorrect hash
  3. there is an extra slash between base and hash

Additional reproduction links:

https://5s3iuf.csb.app/root/path.html

https://5s3iuf.csb.app/root/sameorigin.html

@ichaoX
Copy link
Author

ichaoX commented Jan 25, 2023

@posva
Do you need any other repro?

examples/hash-mode/app.js Outdated Show resolved Hide resolved
* Resolve the href in `<base>` correctly.

* In hash mode, the hash in base is automatically removed and the base trailing slash is distinguished.

* By default the result of `router.resolve().href` is the same as the actual switched URL.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants