Tarayıcıdan görebiliyorsanız izinlerle ilgili değildir.
IP adresi ile erişim ayarlanmış ise mobil uygulamayı güvenlik duvarı engelliyor olabilir.
Tarayıcıdan da IP adresi ile erişemiyorsanız:
domain.com yazdığınızda DNS server'dan IP adresini alıyorsunuz sonra o IP adresine Host:domain.com başlığı (header) ve HTTP/1.1 protokolü ile isteği atıyorsunuz. Web sunucusu Host başlığını kontrol ediyor ve ona ait virtual host varsa onun direktiflerinde yer alan en basitinden 80. port için belirlenen document root olarak belirlenmiş klasörü servis ediyor. Bu da Laravel'de public klasörü olmuş oluyor mesela. cUrl ile ifade etmek gerekirse (-L yönlendirme için, mesela site https'ye yönleniyorsa gibi)
curl -L --header "Host:domain.com" 1.2.3.4
Siz {ip_adresi}/storage/ornek.jpg yazdığınızda bunların hiç birini yapmıyorsunuz. Onu yerine eğer ayarlanmışsa standart porta gelen istekte Host başlığı yoksa gösterilecek default web sayfasını görüyorsunuzdur.
İlla IP adresi ile gireceğim diyorsanız ya IP adresi ile gelindiğinde uygulamanın document root klasörünün servis edilmesini sağlayacaksınız ya resmi curl ile okuyup servis edeceksiniz curl -L --header "Host:domain.com" 1.2.3.4/storage/ornek.jpg gibi.
Neden IP adresi ile ulaşmaya çalışıyorsunuz merak ettim.