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

ASF-ui doesn't (always) respect PathBase (or url-prefix) #1635

Open
5 tasks done
gkurmaev opened this issue Jul 5, 2023 · 5 comments
Open
5 tasks done

ASF-ui doesn't (always) respect PathBase (or url-prefix) #1635

gkurmaev opened this issue Jul 5, 2023 · 5 comments
Labels
🐛 Bug Issues marked with this label indicate unintended program behaviour that needs correction. 🤝 Help welcome Issues marked with this label are open for help. If you could offer us a hand, please do!

Comments

@gkurmaev
Copy link

gkurmaev commented Jul 5, 2023

Checklist

ASF version

Latest stable release

ASF-ui version

34e52e3

Bug description

I'm running asf on debian with a reverse-proxy in the background and am using PathBase configuration attribute for IPC.

IPC config:

{
        "Kestrel": {
                "Endpoints": {
                        "asf": {
                                "Url": "http://127.0.0.1:1242"
                        }
                },
                "KnownNetworks": [
                        "192.168.0.0/16",
                        "10.6.0.0/16",
                        "2001:16b8:424f:a300::0/64"
                ],
                "PathBase": "/asf"
        }
}

lighttpd reverse-proxy config:

server.modules += ("mod_proxy")

$HTTP["url"] =~ "^/asf" {
    proxy.server = ("" => (( "host" => "127.0.0.1", "port" => "1242")))
    proxy.header = ("upgrade" => "enable")
}

Occasionally (there is no pattern), instead of getting the page, I get just a white screen with 404s in the network console showing that the page was trying to load script bundles from the root without respecting the prefix:
image
At the same time head-tag looks like that:
image

On a successful load though, it first still tries to load the script bundle from the root, but then also tries the prefixed version:
image
which is then also reflected in the head-tag:
image

This issue existed for a while now (likely over a year, so I didn't try downgrading), I just wasn't too bothered to report it because it's usually gone the next page refresh.

Expected behavior

Prefixed deployments are recognised 100% of the time during front-end generation/load

Actual behavior

The page only tries to load the script bundle from the /scripts/, and not from the /prefix/scripts

Steps to reproduce

No response

Possible reason/solution

My assumption is that there's a bug in index.html somewhere, cause during times when I get white screen, it does't even stop on the breakpoint in createErrorHandler which is supposed to handle this case.

Can you help us with this bug report?

Somehow, I can test and offer feedback, but can't code

Global ASF.json config file

No response

BotName.json config of all affected bot instances

No response

Additional info

No response

@gkurmaev gkurmaev added 🐛 Bug Issues marked with this label indicate unintended program behaviour that needs correction. 🧐 Evaluation Issues marked with this label are currently being evaluated if they're going to be considered. labels Jul 5, 2023
@Aareksio
Copy link
Member

Aareksio commented Jul 5, 2023

It is technically possible for the script to load (from cache) before <script> tags in index.html are processed. I think the problem is caused by server responding with 304 making the browser load the external script quicker than inlined <script> tag can be processed.

I think we could add something similar to onerror="window.errorBeforeScript = true" to the external script and as soon as the inline script executes check if the property is set, manually triggering the error handler for the event that happened before inline script ran.

@gkurmaev
Copy link
Author

gkurmaev commented Jul 5, 2023

I probably didn't fully understand what is said here, but i'm not sure cache is the issue. I'm getting white pages also when refreshing without cache (Ctrl+Shift+R), which is also confirmed by the network console (it doesn't state there that something was loaded from cache).
Something funny I just found out though, when on a failed white page, just running mainScript.onerror() in the console actually fixes everything, since it then picks up that there's a prefix and adds correct script tags.

@gkurmaev
Copy link
Author

gkurmaev commented Jul 5, 2023

1

@Aareksio
Copy link
Member

Aareksio commented Jul 5, 2023

Alright. The hypothesis as to why it does not work seems incorrect with new information. But otherwise the case is as described. The script fails before we assign mainScript.onerror. We need a way to detect this and manually call mainScript.onerror() if it happens.

@Fptbb
Copy link

Fptbb commented Nov 18, 2023

Bump to this, i'm using behind cloudflare tunnel and it used to work just fine, now the ui doesn't load as described (the api and the rest loads fine), probably this will help solve my problem too.

@MrBurrBurr MrBurrBurr added 🤝 Help welcome Issues marked with this label are open for help. If you could offer us a hand, please do! and removed 🧐 Evaluation Issues marked with this label are currently being evaluated if they're going to be considered. labels Dec 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛 Bug Issues marked with this label indicate unintended program behaviour that needs correction. 🤝 Help welcome Issues marked with this label are open for help. If you could offer us a hand, please do!
Projects
None yet
Development

No branches or pull requests

4 participants