Ссылка на RSS / Atom, относительная, не работает в Firefox - PullRequest
7 голосов
/ 14 декабря 2010

У меня странная проблема. Я генерирую HTML-страницу, размещенную, скажем, на http://www.x.com/stuff, которая содержит

<head>
  <link type="application/atom+xml" rel="alternate" href="/stuff/feed"/>
  ..
</head>

Результат:

  • В IE7 все работает хорошо - вы можете нажать на значок канала в браузере, и канал отобразится
  • В Firefox, просмотрите источник, нажмите на ссылку /stuff/feed, и вы увидите источник канала, так что он работает как положено
  • В Firefox просмотрите страницу (не исходную), затем щелкните значок канала в адресной строке, я получаю сообщение об ошибке, что не удается получить URL-адрес feed://http//www.x.com/stuff/feed

Итак, проблема в том, что он добавляет feed:// в начало URL-адреса и затем удаляет двоеточие : после http. Я понимаю, что feed: - это в любом случае HTTP, так что, возможно, добавление этого не является большой проблемой.

Но в любом случае, факт, что URL Firefox генерирует из моего <link> тега, не работает.

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

Что ты думаешь? Кто-нибудь знает какие-либо доказательства того, что URL должен быть абсолютным? Или я что-то не так делаю? Кажется, такой простой / очевидный тег, где ничего не может пойти не так, но я не могу заставить его работать.

Ответы [ 5 ]

1 голос
/ 15 ноября 2011

У меня была такая же проблема. Это было вызвано прокси-сервером на работе, через который проходил мой веб-трафик. Firefox изменил «http://server.tld/feed-url"» на «feed: //http//server.tld/feed-url». Поскольку веб-прокси, через который проходит весь мой http-трафик, не распознает протокол «feed: //», он отклоняет мой запрос недействителен.

Единственный обходной путь, который я нашел до сих пор, - это ручная настройка параметров прокси в Firefox. Прямо сейчас вы, вероятно, настроили их автоматически в вашей системе. Если вам известна информация о вашем прокси, вы можете настроить ее вручную. Это только для http / https / ftp позволило мне получить доступ к каналу, потому что Firefox затем напрямую обработал URL feed: // (в результате он перенаправил на http: //, как я хотел).

Чтобы настроить параметры прокси-сервера напрямую, вам нужно перейти в «Правка» -> «Настройки» -> «Дополнительно» -> «Настройки» (рядом с «Соединение»). Используйте ручные настройки. Вам нужно будет определить настройки прокси, которые ваша система уже использует.

Обратите внимание, что отсутствующее двоеточие (упомянутое Питом) не является ошибкой на вашем сайте. Это преобразование, которое делает подписка Firefox. Также обратите внимание, что это не проблема, вызванная относительным URL, как предлагает Жюльен. Firefox преобразует его в абсолютный URL, но затем удаляет двоеточие в префиксе протокола http: //, чтобы его можно было добавить к «feed: //» (изменяя протокол и предоставляя исходный абсолютный URL в качестве «URL»). для нового протокола «подачи»).

1 голос
/ 07 января 2011

Это ошибка в Firefox, FoxyProxy или чем-то подобном.

Мало того, что я вижу точно такую ​​же проблему для stackoverflow (перейдите к вопросу в Firefox, нажмите на значок фида, увидите то же странное feed://http//... URL), но также на http://news.google.com/

Я написал другу в совершенно не связанной компании, он видит ту же ошибку из своего FireFox на этих стандартных интернет-страницах.

Это нене помогает использовать абсолютные URL-адреса в теге <link>;news.google.com использует абсолютные URL, например.

Оказывается, если вы переходите к настройкам прокси в Firefox, если вы выбираете «Использовать настройки системного прокси», это происходит;если вы вводите данные прокси вручную или не используете прокси, эта проблема не возникает.

Похоже, что это ошибка здесь http://foxyproxy.mozdev.org/drupal/content/problem-with-feed-and-proxy

1 голос
/ 26 декабря 2010

Можете ли вы предоставить ссылку на ваш сайт или конкретную HTML-страницу, чтобы увидеть это в прямом эфире? Поскольку ATOM-фид этого вопроса о SO объявляется точно так, как вы пытаетесь связать свой ATOM-фид:

 <link rel="alternate" type="application/atom+xml" title="Feed for question 'Link to RSS/Atom feed, relative, doesn&#39;t work in Firefox'" href="/feeds/question/4438794">

Это прекрасно работает с моим Firefox/3.6.13.

1 голос
/ 27 декабря 2010

Тот факт, что нерабочий базовый URL содержит опечатку, является подозрительным: это произойдет, если что-то переопределит его случайно.

Содержит ли ваша страница плохой base элемент ? Элемент base RFC 1808 ) не поддерживается одинаково во всех браузерах, поэтому, если у вас есть что-то подобное в вашем документе (обратите внимание на отсутствующий :):

<base href="http//www.x.com/">

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

Если в документе нет элемента base, убедитесь, что вы случайно не вводите неверный базовый URL-адрес с помощью других средств, таких как Content-Location HTTP-заголовок.

0 голосов
/ 14 декабря 2010

Поставьте абсолютный URL, это хорошая практика для элементов и не сломает браузеры ...

...