Skip to content

safari from ipad pro does not working... #89

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

Closed
kd0g opened this issue Mar 7, 2019 · 86 comments
Closed

safari from ipad pro does not working... #89

kd0g opened this issue Mar 7, 2019 · 86 comments
Assignees
Labels
bug Something isn't working
Milestone

Comments

@kd0g
Copy link

kd0g commented Mar 7, 2019

i see just blank page.

@kylecarbs
Copy link
Member

Will fix!

@kylecarbs kylecarbs added the bug Something isn't working label Mar 7, 2019
@clempat
Copy link

clempat commented Mar 8, 2019

For me I see the editor. I am on IOS 12.1.4.

@rblalock
Copy link

rblalock commented Mar 8, 2019

i can get in to the editor but the smart folio / keyboard for the iPad does not work. The arrow keys don’t work, some of the keys like quotes don’t put in the right characters, etc.

@koalalorenzo
Copy link

Same here, I can open the editor but I can't write / type anything.

@PilotConway
Copy link

The arrow keys is a mobile safari and VS code bug, codesandbox has the same issue. I’ll have to dig up the links to the issues where that’s tracked.

I was just seeing a blank page as well until a couple of minutes ago when the IDE finally loaded for me, but a ton of images are missing in the sidebar.

@kylecarbs
Copy link
Member

Interesting. How are you hosting it @PilotConway ?

@sr229
Copy link
Contributor

sr229 commented Mar 9, 2019

This is a wontfix. Monaco does not support iOS.

@koalalorenzo
Copy link

@sr229 can't there be an alternative to Monaco? 😮 sounds weird

@sr229
Copy link
Contributor

sr229 commented Mar 9, 2019

@koalalorenzo We can't change it to something else. Monaco is the entire core of VSCode. If we change it to something else its no longer VSCode.

@koalalorenzo
Copy link

koalalorenzo commented Mar 9, 2019

Just realised that after looking into it. But it seems that there are other bug reports there that are involving ipads.

Totally OT: What abour Atom?

@sr229
Copy link
Contributor

sr229 commented Mar 9, 2019

I'm pretty sure the previous Alphas have Atom in the Cloud in roadmap soon. Expect that to happen (or not happen).

@NGTmeaty
Copy link
Contributor

NGTmeaty commented Mar 9, 2019

Coder has gotten working iPad support in the past. I guess we'll see how it'll work on the opensource version.

@kylecarbs
Copy link
Member

We can definitely improve iPad support. It's in the plans.

@avelino
Copy link
Contributor

avelino commented Mar 9, 2019

Chrome in iPad does working :(

@boozedog
Copy link

FWIW I'm getting blank (dark) page in both Chrome and Safari on iPad Pro 11" with smart keyboard folio installed. iOS 12.1.4

@PilotConway
Copy link

Interesting. How are you hosting it @PilotConway ?

I was trying the regular hosted version and a linode ubuntu instance I have. The code.com one was the one that finally started loading but I haven't played anymore with getting the linode to not show a blank screen after the password entry page.

@peppy
Copy link

peppy commented Mar 13, 2019

I can reproduce the above (ipad pro) – coder.com load correctly but self-hosted sits on a blank page. I tried debugging using the remote inspector but could not get anything to display on it (it looked like the page was not loaded; no requests fired).

Arrow keys issue looks to be tracked here (and the linked rdar at the end of that thread).

@sr229
Copy link
Contributor

sr229 commented Mar 13, 2019

Keep in mind there's also upstream work happening in VSCode to allow Monaco to work in iPads but its still in progress and I don't know how long is that still happening. @peppy

We do still need to get Monaco to work in iPad natively.

@peppy
Copy link

peppy commented Mar 13, 2019

Yes, I'm aware of this and have been tracking the efforts (although it seems to still be somewhat backlogged).

@sr229
Copy link
Contributor

sr229 commented Mar 13, 2019

FWIW Theia seems to be doing this as well in their Monaco package. I recommended upstream so people like Coder can benefit on the modifications.

@wuzzapcom
Copy link

I can reproduce the above (ipad pro) – coder.com load correctly but self-hosted sits on a blank page. I tried debugging using the remote inspector but could not get anything to display on it (it looked like the page was not loaded; no requests fired).

Arrow keys issue looks to be tracked here (and the linked rdar at the end of that thread).

Have same problem on iPad Pro: after entering password I get just grey screen. Did not tried coder.com.

@sr229
Copy link
Contributor

sr229 commented Mar 17, 2019

@wuzzapcom It would be the same since coder.com uses the same codebase as code-server.

Since VSCode isn't entirely designed for Apple and WebKit, I can safely assume the patchfile that's gonna be used is going to grow larger since we also need to tamper with Monaco.

If WE were to tamper Monaco, i suggest taking these changes upstream so other projects can benefit.

@koalalorenzo
Copy link

koalalorenzo commented Mar 17, 2019

@sr229 can you define "WE" and "tamper with" in an Open Source context?

In any case, I agree with bringing this upstream as well and start collaborating as I think this is not the only project that might get the benefits. :) In case the upstream doesn't agree, a fork might happen.

@sr229
Copy link
Contributor

sr229 commented Mar 17, 2019

@koalalorenzo We as in Coder and the contributors, and "tamper with" as in to make our own modifications. Sorry for the terms.

I did bring the same concern and suggestion to the Theia devs, and people have been actively working on making Monaco to work on iPads, we need more support regarding this to bring Coder/Theia/anything based on Monaco to Webkit.

@wuzzapcom
Copy link

@sr229 to clarify situation: there are some problems with work of monaco editor with Webkit, which requires some big changes in it?

@sr229
Copy link
Contributor

sr229 commented Mar 18, 2019

Yes @wuzzapcom, there’s need for substantial changes so it could work for iOS, but Microsoft is compensating as well for other devices, so fingers crossed we might get what we want soon

@kylecarbs kylecarbs self-assigned this Mar 26, 2019
@kylecarbs kylecarbs added this to the In Progress milestone Mar 26, 2019
@wei
Copy link

wei commented Jun 30, 2019

@NGarate I had the exact same issue. This is because while Desktop Chrome does pass http basic auth headers for websocket calls, Safari does not.

To resolve this, I disabled http basic auth and used the built in password option instead for now.

@deansheather
Copy link
Member

Is there a bug report on webkit's bug tracker?

@wei
Copy link

wei commented Jun 30, 2019

Yes and it's been floating around for years.

@okwme
Copy link

okwme commented Jun 30, 2019

I’m also using an nginx proxy and seeing the black screen. When I remove the proxy I am able to use the app on safari or chrome. With the proxy I see black screen on Safari as well as Chrome. I’m using this nginx file:

server {                                                                                                                                     
    listen 443 ssl;                                                                                                                          
                                                                                                                                             
    server_name mydomain.com                                                                                                                  
                                                                                                                                             
    ssl on;                                                                                                                                  
    ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;                                                                         
    ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;                                                                       
    ssl_session_timeout 5m;                                                                                                                  
    ssl_protocols  SSLv2 SSLv3 TLSv1;                                                                                                        
    ssl_ciphers  HIGH:!aNULL:!MD5;                                                                                                           
    ssl_prefer_server_ciphers on;                                                                                                            
                                                                                                                                             
    #prevent 502 bad gateway                                                                                                                 
    #large_client_header_buffers 8 32;                                                                                                       
                                                                                                                                             
    location / {                                                                                                                             
        auth_basic "Restricted Content";                                                                                                     
        auth_basic_user_file /etc/nginx/.htpasswd;                                                                                           
        # prevents 502 bad gateway error                                                                                                     
        proxy_buffers 8 32k;                                                                                                                 
        proxy_buffer_size 64k;                                                                                                               
        # redirect all HTTP traffic to localhost:8443;                                                                                       
        proxy_pass http://localhost:8443;                                                                                                    
        proxy_set_header X-Real-IP $remote_addr;                                                                                             
        proxy_set_header Host $http_host;                                                                                                    
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                                                                         
        #proxy_set_header X-NginX-Proxy true;                                                                                                
        # enables WS support                                                                                                                 
        proxy_http_version 1.1;                                                                                                              
        proxy_set_header Upgrade $http_upgrade;                                                                                              
        proxy_set_header Connection "upgrade";                                                                                               
        proxy_read_timeout 999999999;                                                                                                        
        proxy_buffering on;                                                                                                                  
    }                                                                                                                                        
}

For the record the authentication via coder also results in a black screen for me on Chrome and Safari

@wei
Copy link

wei commented Jun 30, 2019

@okwme any console errors or network errors under that tab?

@okwme
Copy link

okwme commented Jun 30, 2019

Wish i could check for console errors but i'm on an ipad.
I've got an app called web Tools but the console it has only prints nonsense:

%x INFO %x%s%c%s

@wei
Copy link

wei commented Jun 30, 2019

Chrome on iOS will behave the same as Safari iOS. HTTP Basic Auth definitely does not work. It works perfectly without it for me. I'm using the latest code-server release

@okwme
Copy link

okwme commented Jun 30, 2019

Thanks for the help @wei sounds like my only option is to use the auth supplied by the app. Luckily when I set my certificates manually I no longer see the black screen.

It would be nice to handle my own authentication but I could also live with this option. I'm a little confused how to supply my own password as an option though.. I've created an .env file with PASSWORD=mypassword and run source .env before running the startup command but it does not honor the env variable.

@wei
Copy link

wei commented Jun 30, 2019

The env needs to be specified in the docker run command using -e option so code-server running inside the container can access it.

@okwme
Copy link

okwme commented Jun 30, 2019

I'm not using docker but i found the docs that reference it as export PASSWORD="mypassword", thanks for your help!

@planecore
Copy link

I fixed it by using Let's Encrypt instead of a self signed certificate.

@NGarate
Copy link

NGarate commented Jun 30, 2019

Chrome on iOS will behave the same as Safari iOS. HTTP Basic Auth definitely does not work. It works perfectly without it for me. I'm using the latest code-server release

Same for me.

@wei
Copy link

wei commented Jun 30, 2019

@NGarate this is beyond the scope of this project. https://bugs.webkit.org/show_bug.cgi?id=80362 I doubt Apple will do anything about it.

@NGarate
Copy link

NGarate commented Jun 30, 2019

@kylecarbs Just close the issue.
I doubt it too, nine years and nothing yet.

@ammichael
Copy link

I've managed to use in my iPad Pro with iOS 13 without HTTPS by using sudo ./code-server -N -allow-http.

Not recommended, but if you are in a hurry or just trying it out, it is a way

@antlad
Copy link

antlad commented Jul 1, 2019

With iOS13 all is working fine now on IPad Pro. Using under nginx+ Let's encypt, with reverse proxy to localhost http 'code-server' with password authentification.

@wei
Copy link

wei commented Jul 1, 2019

On iPad OS 13 too, just want to clarify: Yes - built-in password authentication works,
http basic authentication does not work.

@ChickenKaraage
Copy link

i can get in to the editor but the smart folio / keyboard for the iPad does not work. The arrow keys don’t work, some of the keys like quotes don’t put in the right characters, etc.

Smart keyboard quotes is unrelated to code server. You can fix it by turning off smart punctuations on your iPad.

@satyrius
Copy link

I'm on iPadOS v13.1.2. It doesn't work for me either. I see a blank grey page, no UI. The same setup works as a charm on the desktop macOS v10.14.6 Safari v13.0.2

@coadler
Copy link
Contributor

coadler commented Oct 21, 2019

@satyrius are you using a self signed cert? If so, I remember that being the cause of the blank page problem.

@coadler
Copy link
Contributor

coadler commented Oct 21, 2019

Also, this issue seems to be from pretty early in the v1 days. As far as I can tell, the two major issues discussed here are now fixed.

The blank page problem is caused by self signed certificates. You can get around this by using LetsEncrypt to generate a trusted certificate. The problem with arrow keys not working were fixed in iPadOS 13.

If I missed anything let me know.

@coadler coadler closed this as completed Oct 21, 2019
@satyrius
Copy link

@coadler thanks for the quick reply. Just for a reference, I installed it from a Digital Ocean Marketplace https://cloud.digitalocean.com/marketplace/5d3f3a29bdfa55613aea566e?i=15a27f. Yes. it has a self-signed cert. I would be great to have the template updated with Let's Encrypt or instructions how to make it manually.

@coadler
Copy link
Contributor

coadler commented Oct 21, 2019

cc @sr229

@jianfei96
Copy link

Do not use basicauth.
It's my config file ,using caddy server. In iPad 10.5,iOS 13,Safari.
code.example.com{
proxy / 127.0.0.1:8081 {
transparent
websocket
}
}
And systemd service config
[Unit]
Description=Code Server
Wants=network-online.target
After=network-online.target

[Service]
Environment=PASSWORD="password"
Type=exec
User=http
ExecStart=/usr/local/bin/code-server --port 8081

[Install]
WantedBy=multi-user.target

@LindenLiu
Copy link

There’s a workaround if you are using nginx. The problem for iOS (not iPad Pro version) is the browser won’t set Authentication header for web sockets connection. If you configure nginx to use cookie based authentication like SSO. The one I tried is nginx-sso https://github.com/Luzifer/nginx-sso

@aykutkaskaya
Copy link

I have this problem also. Does anyone know the solution or I just need to use it without SSL in my local VM?

@jsjoeio
Copy link
Contributor

jsjoeio commented May 3, 2021

@aykutkaskaya Please open a bug report if you're having issues and we'll be happy to take a look!

@coder coder locked as resolved and limited conversation to collaborators May 3, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests