Open jrieken opened 4 years ago
is there any progress? @jrieken
Hi @jrieken, any ETA on resolving this? I cannot find a way out of this encoding problem with vscode.env.openExternal
Tried the same URL from the verification steps described at https://github.com/microsoft/vscode/issues/83645#issuecomment-560416182
vscode.env.openExternal(
vscode.Uri.parse(
"https://firebasestorage.googleapis.com/v0/b/brewlangerie.appspot.com/o/products%2FzVNZkudXJyq8bPGTXUxx%2FBetterave-Sesame.jpg?alt=media&token=0b2310c4-3ea6-4207-bbde-9c3710ba0437"
)
)
Browser opens (1) with 400 Invalid HTTP method/URL pair.
instead of (2)
(1) https://firebasestorage.googleapis.com/v0/b/brewlangerie.appspot.com/o/products/zVNZkudXJyq8bPGTXUxx/Betterave-Sesame.jpg?alt=media&token=0b2310c4-3ea6-4207-bbde-9c3710ba0437
(2) https://firebasestorage.googleapis.com/v0/b/brewlangerie.appspot.com/o/products%2FzVNZkudXJyq8bPGTXUxx%2FBetterave-Sesame.jpg?alt=media&token=0b2310c4-3ea6-4207-bbde-9c3710ba0437
I'm blocked on this now too - I need to open URLs that have fragments and they get encoded incorrectly.
@jrieken this isn't assigned to any milestone - do you think it's likely to happen in the near future? Would you accept a PR that just adds an overload that takes URL
in openExternal
?
We can work around it for non-remote workspaces by just launching the browser ourselves, but it'll still be broken in VS Codespaces and friends.
It isn't a trivial change but feel free to give it a try, code pointer: https://github.com/microsoft/vscode/blob/e80c62bdcb0a1d7ce0d3d826241df0ef20162417/src/vs/workbench/api/common/extHostWindow.ts#L42
It isn't a trivial change
Before I bite off more than I can chew, what makes you say that? I thought it might just be a case of accepting a URL
all the way through (in the same way as it currently accepts a URI
). Now I'm not so sure 😄
(though probably if it was so simple, it would've been done already! ..)
For remote extension hosts, all uris go through some special handling so that an extension can talk about a (local) file-uri and so that the UI knows that it's a file-uri on the other machine. So, now the question is if URL objects should also go through that mechanism (which requires them to be uris) or not
I see - it does sound like there's more to it than I thought.
I've managed to work around it for now (passing things on the querystring - which isn't affected as much by the encoding - instead of the fragment, and having the receiving app move them over) as I needed a fix for the next release.
As a hack, I was able to pass a string
to vscode.env.openExternal(myUrl)
instead of using vscode.env.openExternal(vscode.Uri.parse(myUrl))
. I don't know how robust this is because I had to @ts-ignore
the call, but it works for my use case and my url no longer gets double encoded.
Stumbled on the similar issue while trying to open external with query params for ouath2. ?
in redirect URI gets double encoded. It would be nice if just string
type can be allowed for external URIs 🙏
It seems like this could be supported by changing the API to note it supports a string
- or maybe introduce another API to avoid this double-encoding issue?
I got bit by this as well: https://github.com/gitkraken/vscode-gitlens/issues/2014
As @DavidGoldman notes, passing a string works and avoids this problem. @jrieken could the .d.ts be updated to allow a string?
Friendly ping for the above comment @jrieken, can we just update the .d.ts file here?
@jrieken My issue https://github.com/microsoft/vscode/issues/88273 is marked as duplicated with this issue, but I think it may not same with this.
I test following solution, but not work for my situation on windows.
As a hack, I was able to pass a
string
tovscode.env.openExternal(myUrl)
instead of usingvscode.env.openExternal(vscode.Uri.parse(myUrl))
. I don't know how robust this is because I had to@ts-ignore
the call, but it works for my use case and my url no longer gets double encoded.
Hello. Any chance this can be fixed? an extension that I am building relies on openExternal
to open files with an external protocol, and it´s encoding the "=" in the query string, breaking the url handler.
@akosyakov hack worked for me, in the meanwhile.
Hello. Any chance this can be fixed? an extension that I am building relies on
openExternal
to open files with an external protocol, and it´s encoding the "=" in the query string, breaking the url handler.@akosyakov hack worked for me, in the meanwhile.
Same for me. I'm trying to open an external app with a link in an .md file: [test link](obsidian://open?vault=Obsidian%20Sandbox&file=Adventurer%2FNo%20prior%20experience)
, but I get an error alert if I click the link in the file itself and get no response in a default md preview, same with a preview from the Markdown preview enhanced extension.
VS Code encodes "=" signs
A also tried to add the "obsidian://" protocol to accepted protocols for links that are processed by the Markdown preview enhanced extension but still nothing happens in the preview mode of this extension.
This is followup work from https://github.com/microsoft/vscode/issues/83645 and in essence it's about allowing to use the
URL
-type when dealing with resources outside of VS Code. So far we have identified:openExternal
-apiDocumentLinkProvider
-api