web-dev-qa-db-fra.com

Pourquoi est-ce que je reçois une erreur pour Apple-touch-icon-precomposed.png

J'ai créé un nouveau projet Rails3 mais je vois souvent les journaux suivants dans les journaux de mon serveur. Pourquoi je reçois ces demandes et comment puis-je les éviter?

Démarrage de GET "/Apple-touch-icon-precomposed.png" pour 192.168.6.2 à 2012-09-18 20:03:53 +0530

ActionController :: RoutingError (Aucune route ne correspond à [GET] "/Apple-touch-icon-precomposed.png"):

Je n'ai donné ce lien nulle part et je ne veux pas rendre cette image nulle part. Je ne comprends pas pourquoi on essaie de charger cette ressource.

214
Akash Agrawal

Je suppose que les appareils Apple font ces demandes si le propriétaire de l'appareil y ajoute le site. C'est l'équivalent du favicon. Pour résoudre ce problème, ajoutez 2 100 × 100 fichiers png, enregistrez-le sous Apple-touch-icon-precomposed.png et Apple-touch-icon.png et chargez-le dans le répertoire racine du serveur. Après cela, l’erreur devrait disparaître.

J'ai remarqué de nombreuses demandes pour Apple-touch-icon-precomposed.png et Apple-touch-icon.png dans les journaux qui tentaient de charger les images à partir du répertoire racine du site. J'ai d'abord pensé qu'il s'agissait d'une mauvaise configuration du thème et du plug-in pour mobile, mais j'ai appris par la suite que les périphériques Apple adressaient ces demandes si le propriétaire du périphérique y ajoutait le site.

Source: Pourquoi les webmasters devraient-ils analyser leur journal des erreurs 404 (mars 2012; par Martin Brinkmann)

194
Joao Leme

Si un utilisateur du navigateur Web Safari (appareils Apple) visite votre site. Le navigateur tente d'extraire l'icône du site si elle n'est pas définie dans <head> dans l'ordre suivant:

  1. Apple-touch-icon-57x57-precomposed.png
  2. Apple-touch-icon-57x57.png
  3. Apple-touch-icon-precomposed.png
  4. Apple-touch-icon.png

Pour résoudre ce problème, définissez une icône pour les navigateurs Web Safari ou les périphériques Apple. Ajoutez quelque chose comme ceci à la section principale de votre site:

<link rel="Apple-touch-icon" href="/custom_icon.png"/>

Si vous voulez garder <head> clean, chargez l’icône dans le répertoire racine de votre site avec le nom propre. 

La taille de l'icône default est de 57px.

Vous trouverez plus de détails sur Bibliothèque de développement iOS

58
Anand Kumar

Notez que cela peut se produire même lorsque l'utilisateur n'a PAS ajouté le site au signet sur son écran d'accueil iOS. Par exemple, chaque fois que vous ouvrez une page à l'aide de Chrome pour iOS, un GET "/Apple-touch-icon-precomposed.png" est créé.

J'ai traité cela et d'autres requêtes non HTML 404 dans ApplicationController comme suit:

respond_to do |format|
  format.html { render :template => "error_404", :layout => "errors", :status => 404 }
  format.all { render :nothing => true, :status => 404 }
end

La réponse format.all prend en charge des images telles que ce fichier PNG (qui n'existe pas pour mon site).

5
Tinynumbers

Si vous avez terminé la recherche sur Google, il s'agit d'une configuration simple pour éviter cette erreur de saturation des journaux du serveur Web:

Apache virtualhost

Redirect 404 /Apple-touch-icon-precomposed.png
<Location /Apple-touch-icon-precomposed.png>
    ErrorDocument 404 "Apple-touch-icon-precomposed does not exist"
</Location>

Bloc serveur Nginx:

location =/Apple-touch-icon-precomposed.png {
        log_not_found off;
        access_log off;
}

PS: Il est possible que vous souhaitiez ajouter aussi Apple-touch-icon.png et favicon.ico.

4
Leopoldo Sanczyk

Il existe un joyau tel que quiet_assets qui fera taire ces erreurs dans vos journaux si, comme moi, vous ne souhaitiez pas ajouter ces fichiers à votre application Rails:

https://github.com/davidcelis/quiet_safari

3
davidcelis

J'ai finalement résolu !! C'est une fonctionnalité Web Clip sur les périphériques Mac. Si un utilisateur souhaite ajouter votre site Web dans Dock o Desktop, il demande cette icône.

You may want users to be able to add your web application 
or webpage link to the Home screen. These links, represented 
by an icon, are called Web Clips. Follow these simple steps 
to specify an icon to represent your web application or webpage
on iOS.

plus d'infos:https://developer.Apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html

comment résoudre?: Ajoutez une icône pour résoudre le problème.

2
molavec

Une solution alternative consiste simplement à ajouter un itinéraire à votre routes.rb

En gros, il intercepte la requête Apple et restitue un 404 au client. De cette façon, vos fichiers journaux ne sont pas encombrés.

# routes.rb at the near-end
match '/:png', via: :get, controller: 'application', action: 'Apple_touch_not_found', png: /Apple-touch-icon.*\.png/

ajoutez ensuite une méthode 'Apple_touch_not_found' à votre application_controller.rb

# application_controller.rb
def Apple_touch_not_found
  render  plain: 'Apple-touch icons not found', status: 404
end
1
Roger

La même chose se passe pour moi. Et oui, comme @Joao Leme l'a dit, il semble que cela soit lié à un utilisateur qui ajoute un site à ses favoris sur son écran d'accueil.

Cependant, j'ai remarqué que même s'il y avait une erreur dans le journal, cela se passait dans les coulisses et l'utilisateur ne la voyait jamais. Je suppose que le périphérique demande une icône tactile spécifique à sa résolution (ce qui n’existe pas) jusqu’à ce que le code général Apple-touch-icon ou Apple-touch-icon-precomposed, le cas échéant, soit défini par défaut, ou génère une petite capture d’écran de la page actuelle.

FWIW, placez les icônes dans le répertoire/public.

0
Brian

Créez simplement des fichiers de taille zéro appelés les noms appropriés.

La demande sera satisfaite sans aucun transfert de données supplémentaire ni aucune ligne de journalisation supplémentaire.

0
Dave G