rust-lang / rust

Empowering everyone to build reliable and efficient software.
https://www.rust-lang.org
Other
96.96k stars 12.53k forks source link

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

Open frjnn opened 3 years ago

frjnn commented 3 years ago

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.

klensy commented 3 years ago

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 commented 3 years ago

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

frjnn commented 3 years ago

@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 commented 3 years ago

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 commented 3 years ago

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

AlvinKuruvilla commented 3 years ago

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?

apiraino commented 3 years ago

@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 commented 3 years ago

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

DarrienG commented 2 years ago

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

farukdemirbas commented 2 years ago

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 commented 2 years ago

Assigning priority as discussed in the prioritization working group.

emabee commented 2 years ago

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 (75d9a0ae2 2022-02-16)

Enselic commented 2 years ago

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 commented 2 years ago

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 commented 2 years ago

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 commented 2 years ago

@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 commented 2 years ago

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 commented 1 year ago

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

nixpulvis commented 11 months ago

:(

kovar commented 9 months ago

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

A new Developer tab becomes available, where you check

See image below 👇

image
estebank commented 9 months ago

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 commented 7 months ago

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.