Подтвердить что ты не робот

Почему я получаю ошибку для apple-touch-icon-precomposed.png

Я создал новый проект rails3, но в журналах сервера много раз просматривал журналы. Почему я получаю этот запрос и как его избежать?

Начнется GET "/apple-touch-icon-precomposed.png" для 192.168.6.2 на 2012-09-18 20:03:53 +0530

ActionController:: RoutingError (Нет совпадений маршрута [GET] "/apple-touch-icon-precomposed.png" ):

Я не передавал эту ссылку нигде и не хочу отображать это изображение в любом месте. Я не знаю, почему этот ресурс пытается загрузить.

4b9b3361

Ответ 1

Редакционное примечание: информация в этом ответе не особенно ошибочна, однако более подробная техническая информация доступна здесь:


Я думаю, что Apple-устройства выполняют эти запросы, если владелец устройства добавляет к нему сайт. Это эквивалент значка. Чтобы разрешить, добавьте 2 100 × 100 png файлов, сохраните их как apple-touch-icon-precomposed.png и apple-touch-icon.png и загрузите их в корневой каталог сервера. После этого ошибка должна исчезнуть.

Я заметил множество запросов для apple-touch-icon-precomposed.png и apple-touch-icon.png в журналах, которые пытались загрузить изображения из корневого каталога сайта. Сначала я подумал, что это была неправильная настройка мобильной темы и плагина, но позже выяснили, что устройства Apple выполняют эти запросы, если владелец устройства добавляет к нему сайт.

Источник: Почему веб-мастера должны анализировать журнал ошибок 404 (март 2012 г. Мартин Бринкманн)

Ответ 2

Если пользователь веб-браузера Safari (устройства Apple) посещает ваш сайт. Браузер пытается извлечь значок сайта, если он не определен в <head> в следующем порядке:

  • яблочно-сенсорный значок-57x57-precomposed.png
  • яблочно-сенсорный значок-57x57.png
  • яблочно-сенсорный значок-precomposed.png
  • яблочно-сенсорный icon.png

Чтобы решить эту проблему, определите значок для веб-браузеров Safari или устройств Apple. Добавьте что-то вроде этого в раздел главы вашего сайта:

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

Если вы хотите сохранить <head> clean, загрузите значок в корневой каталог вашего сайта с соответствующим именем.

Значок по умолчанию составляет 57 пикселей.

Подробнее об библиотеке разработчиков iOS вы найдете более подробно.

Ответ 3

Обратите внимание, что это может произойти, даже если пользователь НЕ добавил закладку на сайт в свой домашний экран iOS - например, при каждом открытии страницы с помощью Chrome для iOS он выполняет GET "/apple-touch-icon-precomposed.png".

Я обработал этот и другие запросы, отличные от HTML 404, в моем ApplicationController следующим образом:

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

Ответ format.all отвечает за изображения, такие как этот PNG файл (который не существует для моего сайта).

Ответ 4

Если вы закончили здесь googling, это простая конфигурация, чтобы предотвратить эту ошибку, полную журналы веб-сервера:

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>

Сервер Nginx:

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

PS: Возможно, вы хотите добавить apple-touch-icon.png и favicon.ico тоже.

Ответ 5

Theres жемчужина, вроде quiet_assets, которая закроет эти ошибки в ваших журналах, если, как и я, вы не захотите добавить эти файлов в ваше приложение Rails:

https://github.com/davidcelis/quiet_safari

Ответ 6

Я наконец решил! Это функция Веб-клип на устройствах Mac. Если пользователь хочет добавить ваш сайт в Dock o Desktop, он запросит этот значок.

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.

дополнительная информация: https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html

как решить?: Добавьте значок, чтобы решить проблему.

Ответ 7

Альтернативное решение - просто добавить маршрут к routes.rb

Он в основном улавливает запрос Apple и возвращает 404 клиенту. Таким образом, ваши файлы журналов не засоряются.

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

затем добавьте метод 'apple_touch_not_found' к вашему application_controller.rb

# application_controller.rb
def apple_touch_not_found
  render  plain: 'apple-touch icons not found', status: 404
end

Ответ 8

То же самое происходит для меня. И да, как сказал @Joao Leme, похоже, это связано с тем, что пользователь закладок сайта на своем рабочем экране своего устройства.

Однако я заметил, что, хотя в журнале есть ошибка, это происходит за кулисами, и пользователь никогда не видит ошибку. Я предполагаю, что устройство делает запрос на сенсорный значок, свойственный его разрешению (которого нет), до тех пор, пока не будет установлено общее apple-touch-icon или apple-touch-icon-precomposed, если оно присутствует, или генерирует небольшой снимок экрана текущей страницы.

FWIW, поместите значки в каталог/public.

Ответ 9

Если вам не нравится значок, выглядящий довольно на всех устройствах Apple, просто добавьте

get '/:apple_touch_icon' => redirect('/icon.png'), constraints: { apple_touch_icon: /apple-touch-icon(-\d+x\d+)?(-precomposed)?\.png/ }

в ваш config/routes.rb файл, а некоторые icon.png - в каталог public. Также работает перенаправление на 404.html вместо icon.png.

Ответ 10

Просто создайте файлы нулевого размера, называемые соответствующими именами.
Запрос не будет удовлетворен никаким дополнительным каналом передачи данных и дальнейшими линингами. -DaveG

Ответ 11

Вся эта проблема является лишь проблемой предварительного просмотра при использовании локального сервера через функцию предварительного просмотра Adobe Edge Animate. Он должен и должен быть рассмотрен разработчиками Adobe Edge Animate, и нет необходимости настраивать любой код или настройку.

Ответ 12

Попробуйте изменить ссылку из

/apple-touch-icon-precomposed.png 

to:

<%=asset_path "apple-touch-icon-precomposed.png" %>