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

docs not loading properly in Safari unless Develop Menu is enabled #85444

Open
Tracked by #84
frjnn opened this issue May 18, 2021 · 23 comments
Open
Tracked by #84

docs not loading properly in Safari unless Develop Menu is enabled #85444

frjnn opened this issue May 18, 2021 · 23 comments
Labels
A-rustdoc-ui Area: Rustdoc UI (generated HTML) C-bug Category: This is a bug. P-medium Medium priority T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue.

Comments

@frjnn
Copy link

frjnn commented May 18, 2021

Setup

Command issued: cargo doc --open
Safari version: 14.1
MacOS: BigSur 11.3.1

rustup version: 1.24.2
rustc version: 1.52.1

I expected to see the crate's documentation being displayed and formatted properly.

Instead, this happened:
Screenshot 2021-05-18 at 19 58 29

This is not by any means a problem of ndarray, I'm experiencing this with all the crates I've tried so far.

@frjnn frjnn added the C-bug Category: This is a bug. label May 18, 2021
@klensy
Copy link
Contributor

klensy commented May 18, 2021

rustc version: 1.5.2

1.52? Try 1.52.1. Press F12 in browser and check any errors (is safari have any dev tools like chrome?)

@frjnn
Copy link
Author

frjnn commented May 18, 2021

My bad! rustc's version is 1.52.1, I also corrected the issue.

@frjnn
Copy link
Author

frjnn commented May 18, 2021

@estebank @klensy enabling the develop menu seems to have solved the issue. Now the documentation loads properly.

What I did:

  1. Opened Safari
  2. Went to Preferences
  3. Went to Advanced Preferences
  4. Checked "Show Develop menu in menu bar"

I don't know if this can be closed or not though.

@klensy
Copy link
Contributor

klensy commented May 18, 2021

I don't think that docs should require enabling devtools in browser, perhaps you rebooted browsed or OS? I don't have safari, so can't check that issue.

@frjnn
Copy link
Author

frjnn commented May 18, 2021

No, I didn't reboot anything, I didn't even restart Safari, I just enabled the Develop Menu.

@frjnn frjnn changed the title docs not loading properly in Safari docs not loading properly in Safari unless Develop Menu is enabled May 18, 2021
@jyn514 jyn514 added T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. and removed T-rustdoc-temp labels Jun 22, 2021
@AlvinKuruvilla
Copy link

Second, this issue op, been having it for a while now. Wondering if there is a fix or a way to change what browser cargo-doc uses?

@estebank estebank added the I-prioritize Issue: Indicates that prioritization has been requested for this issue. label Aug 13, 2021
@apiraino
Copy link
Contributor

@AlvinKuruvilla I think rustdoc opens the system default browser. Also, is this issue specific to Safari? Do you have any other browser installed that you can temporarily set as default to test this?

@AlvinKuruvilla
Copy link

AlvinKuruvilla commented Aug 16, 2021

Yes I changed my default browser to brave and now the docs appear correctly, suggesting it is a Safari only issue

@DarrienG
Copy link

Confirming this is still an issue in the latest version of rust (1.55.0). Enabling the develop menu fixes it.

@farukdemirbas
Copy link

Confirming this is still an issue in the latest version of rust (1.55.0). Enabling the develop menu fixes it.

Exact same here.

@camelid camelid added P-medium Medium priority A-rustdoc-ui Area: Rustdoc UI (generated HTML) and removed I-prioritize Issue: Indicates that prioritization has been requested for this issue. labels Oct 25, 2021
@camelid
Copy link
Member

camelid commented Oct 25, 2021

Assigning priority as discussed in the prioritization working group.

@emabee
Copy link

emabee commented Feb 22, 2022

Same here - it works in firefox, but not in Safari, unless I enable the dev tools; rust version (for doc) is rustc 1.60.0-nightly (75d9a0a 2022-02-16)

@Enselic
Copy link
Member

Enselic commented Jul 10, 2022

This is caused by Safari disallowing by default to load external files from disk such as ../rustdoc.css. When Develop Menu is enabled, this restriction is lifted. Manually inlining the CSS into e.g. index.html is another way to make the styling work.

@jsha
Copy link
Contributor

jsha commented Sep 2, 2022

Thanks for the details, @Enselic! Given that, I don't think we can work around it in rustdoc. We rely heavily on external files, and inlining everything would be a performance problem for viewing the docs on the web. It would also be a size problem for locally-generated docs.

Perhaps we could have cargo doc --open and rustup doc detect if the system browser is Safari, and if so try Firefox instead?

We could also include inline script at the top of each page that checks for file:/// URL and Safari browser, and injects a banner explaining why the page isn't rendering right and what to do about it.

@ptdecker
Copy link

ptdecker commented Sep 4, 2022

I have developer menus enabled but am experiencing the same issue. There is also someone on StackOverflow who has put it up as a question: link. Attached is a screenshot. I'm using Safari 15.6 under macOS Monterey 12.5 on a MacBook Pro with an M1 chip. My cargo version was 1.16.0 (a02ae42f 2022-04-19). I updated to 1.63.0 (fd9c4297c 2022-07-01) and the same problem persists.

safarierror

@jsha
Copy link
Contributor

jsha commented Sep 4, 2022

@ptdecker try this:

python -mhttp.server --directory target/doc/ 5555 &
open http://localhost:5555/guessing_game/

This starts a web server locally that serves the generated documentation, then opens it in your default browser (presumably Safari). If that works, it might be another way we can work around the issue for Safari users.

@mredigonda
Copy link

This is not just a Safari issue, it also doesn't work on Chrome in my Mac M1.

(...) from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, chrome-untrusted, https, isolated-app.

These are the kinds of errors I get.

Basically it seems that the protocol file:// is not allowed to load resources like fonts, css, etc.

The workaround to open a server with Python works.

@mimoo
Copy link

mimoo commented Sep 6, 2023

just ran into this, works on chrome but doesn't work on safari indeed!

@nixpulvis
Copy link

:(

@kovar
Copy link

kovar commented Nov 28, 2023

On macOS Sonoma (14.1.1), Safari 17.1, you need to go to Settings and then the Advanced tab and enable

  • Show features for web developers

A new Developer tab becomes available, where you check

  • Disable local file restrictions

See image below 👇

image

@estebank
Copy link
Contributor

I believe @jsha's solution of starting a lightweight server might be the best way to address this issue going forward, but we'd need to test that we don't add other problems (because of OS-specific security features that would cause the server not to start or give scary warnings).

@shanecelis
Copy link

Setting up new computer on macOS 14.3. Turning on developer mode by itself did not fix my issue. But turning on developer mode then quitting Safari did fix it. I did not have to disable local file restrictions.

@RodBurman
Copy link

With macOS Sequoia 15.0 the problem persists and can still be fixed in the developer options of safari. If injecting the css into index.html fixes the problem (as suggested in the comments above) then maybe do that? If this bloats things too much for normal usage "we" could addd another cargo doc option e.g. --css-in-index?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-rustdoc-ui Area: Rustdoc UI (generated HTML) C-bug Category: This is a bug. P-medium Medium priority T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests