27

У меня проблема с гиперссылкой в Excel: я нажимаю, скажем, A1 , копирую ссылку в ней (http://www.godaddy.com/domains/searchresults.aspx?ci=54814), щелкаю правой кнопкой мыши по гиперссылке и копирую эту ЖЕ URL как ссылка (если она не обнаруживается и не изменяется автоматически).

Когда я нажимаю на нее, меня перенаправляют на http://www.godaddy.com/domains/search.aspx?ci=53972 .

Если я копирую и вставляю ссылку прямо в браузер, она работает нормально (т.е. я не перенаправлен на другой URL).

Кто-нибудь знает, что происходит?

13 ответов13

29

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

При щелчке URL-адреса в Excel открывается его в браузере по умолчанию. Но это не совсем так. Перед открытием в браузере Excel сначала запускает обнаружение протоколов Microsoft Office. При этом используется компонент Windows/Internet Explorer, чтобы определить, работает ли URL. (Он идентифицирует себя не как Internet Explorer, а как «пользовательский агент: обнаружение существования Microsoft Office».) И если с результатами (как-то) все в порядке, то результаты этой проверки откроются в вашем браузере по умолчанию.

Не имея cookie-файлов (точнее говоря: не хватает сеанса), GoDaddy дает этому компоненту Internet Explorer некоторое перенаправление. И результат этого открывается в вашем браузере по умолчанию. Это URL, который вы видите.

Скорее всего, ваш браузер по умолчанию не Internet Explorer? Затем вставка URL-адреса в IE напрямую и щелчок по нему для получения файлов cookie могут также заставить ссылку работать в Excel. (Только для тестирования; это не постоянное решение.)

Вам больше повезет, если вы воспользуетесь URL-адресом, который не использует скрытую информацию из файла cookie, например http://www.godaddy.com/domains/search.aspx?domainToCheck=superuser.com.

10

Это ошибка Excel. Если вы вставите ссылку в электронную почту Outlook или WordPad и откроете ссылку оттуда, она будет работать правильно.

Excel никогда не должен создавать скрытый сеанс для проверки гиперссылки. какой в этом смысл. Просто нужно его открыть, больше ничего. Они используют ту же логику в MS Word. От этого тоже не работает. Когда Excel пытается проверить ссылку в фоновом режиме, создается новый сеанс, который не проходит проверку подлинности, поэтому он перенаправляется на страницу входа или что-то еще. После этого вместо открытия исходного URL-адреса в браузере Excel открывает URL-адрес перенаправления. Они действительно знают, как сделать простую вещь сложной.

6

Это известная ошибка Microsoft, когда гиперссылки перенаправляются на другую страницу, если:

  • Вы используете Microsoft Internet Explorer:
    • с прокси сервером
    • при использовании брандмауэра, который не разрешает запросы HTTP в вашей локальной сети
  • Internet Explorer не является вашим браузером по умолчанию.
  • Раздел реестра ForceShellExecute отсутствует или не имеет значения 1

Вы можете применить исправление здесь:

http://support.microsoft.com/kb/218153

1

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

<HTML>
<HEAD>
<TITLE>Redirect</TITLE>
<META HTTP-EQUIV="refresh" CONTENT="0;URL=http://www.google.com">
</HEAD>
<BODY>
Redirecting...
</BODY>
</HTML>

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

1

Боюсь, здесь слишком много, чтобы добавить комментарий.

Исходная ссылка возвращает код состояния 302

Из стандартов w3c:

Запрашиваемый ресурс временно находится под другим URI. Поскольку перенаправление может иногда изменяться, клиент ДОЛЖЕН продолжать использовать Request-URI для будущих запросов. Этот ответ может быть кэширован, только если он указан в поле заголовка Cache-Control или Expires.

Временный URI ДОЛЖЕН быть задан полем Location в ответе. Если метод запроса не является HEAD, объект ответа ДОЛЖЕН содержать краткую гипертекстовую заметку с гиперссылкой на новый URI.

Если код состояния 302 получен в ответ на запрос, отличный от GET или HEAD, пользовательский агент НЕ ДОЛЖЕН автоматически перенаправлять запрос, если он не может быть подтвержден пользователем, поскольку это может изменить условия, при которых был выполнен запрос.

  Note: RFC 1945 and RFC 2068 specify that the client is not allowed
  to change the method on the redirected request.  However, most
  existing user agent implementations treat 302 as if it were a 303
  response, performing a GET on the Location field-value regardless
  of the original request method. The status codes 303 and 307 have
  been added for servers that wish to make unambiguously clear which
  kind of reaction is expected of the client.

Так как @xlm заявил, что это GoDaddy делает временное перенаправление.

Казалось бы, при вызове из Excel перенаправление не всегда выполняется.

0

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

  1. ПОЛУЧИТЬ ГОЛОВУ (с временным сеансом)
  2. GET (с временным сеансом)
  3. GET (с реальной сессией)

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

Это привело меня к идее создать целевую страницу, которая перенаправит пользователя на целевую страницу, если пользователь аутентифицирован. И это работает. При получении третьего GET сервер замечает, что пользователь прошел проверку подлинности, и перенаправляет на целевую страницу. Для неаутентифицированного пользователя целевая страница показывает ссылку на целевую страницу. И когда пользователь нажимает на ссылку, он будет перенаправлен на страницу входа.

0

Я могу повторить вашу проблему, но это не проблема Excel. На самом деле Godaddy перенаправляет вас на вторую ссылку. Попробуйте вставить эту ссылку в свой браузер, и вы увидите, что она перенаправляется на вторую.

Примечания: протестировано в Excel 2007, Firefox 13.0.1

0

Я решил эту проблему, выполнив поиск Google по URL-адресу и используя URL-адрес страницы результатов поиска Google для гиперссылки.

например, для sweettoothrewards.com я использовал https://www.google.ca/?gfe_rd=cr&ei=xwK5VY-LG8KC8QeGn4LoDw&gws_rd=ssl#q=+sweettoothrewards.com В оперный браузер со мной не зашли.

0

У меня была такая же проблема, только сайт, на котором я собирался включить обработку и извлечение базы данных по отметке даты. Я бы скопировал URL в новую ячейку. изменить дату нажмите на новый URL, НО получите старый URL.

Однако, если я щелкнул по новой ячейке ctl, подойди к окну отображения ячейки, щелкни по моему курсору в любом месте этого окна, затем щелкни по другой ячейке, значения даты меняются, и щелкнув по ссылке, я получу нужные данные.

Все это в IE.

Похоже, что когда вы копируете URL-адрес, он приносит информацию об этом сайте. Не уверен, какая магия происходит, когда я открываю ячейку и не изменяю ее, но она меняет URL, когда вы наводите на нее указатель. Я обычный магнит для подобных вещей в Excel. Вероятно, почему я не доверяю этому.

0

Я обнаружил, что эта проблема возникает, когда целевой URL-адрес является безопасным сайтом, требующим входа в систему. Хотя я уже вошел в другое окно, оно не будет работать должным образом. Если я вырезал и вставил URL-адрес в новую вкладку или окно, Chrome достаточно умен, чтобы обнаружить, что я уже прошел аутентификацию, и правильно открывает новую страницу. Однако, если я не вошел на сайт, я буду перенаправлен на страницу входа, как и ожидалось.
Но при нажатии на тот же URL-адрес в Excel с теми же условиями я либо получаю только страницу входа в систему, либо мой удаленный сайт просто сообщает мне, что это неподдерживаемый браузер.
Проблема явно исходит из Excel, потому что, если я возьму эту точную электронную таблицу и сохраню ее в формате PDF, гиперссылки, отображаемые в PDF, будут работать отлично при нажатии.
Кроме исправления этой заведомо непреднамеренной «функции» Excel/Office, пытающейся проверить ссылки, как опубликовали другие, единственный найденный мной обходной путь - создать локальную страницу перенаправления, которая может принимать мои уникальные параметры в URL и открывать новое окно, как следует (спасибо другим за код JavaScript) Перенаправьте, изменив гиперссылку Excel на что-то вроде http://mylocaldomain.com/redirect.html?ID=12345, где страница перенаправления находится на локальном сервере, которым вы управляете, и параметр 12345 делает URL-адрес перенаправленным на нужную запись. Для моего SS с около 10000 ссылок это работает просто отлично.

Redirect.html выглядит следующим образом.

<!DOCTYPE html>
<html>
<script>
function getUrlVars() {
    var vars = {};
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,    
    function(m,key,value) {
      vars[key] = value;
    });
    return vars;
  }
    document.getElementById("demo").innerHTML=getUrlVars()["type"];
    var varbaseurl=[put your base url here]
    window.location = varbaseURL  + getUrlVars()["type"]
</script>
<body> 
redirecting to: <p id=demo></p>
-1

Нам удается воспроизвести проблему, и наши выводы разработчика показывают, что когда вы вставляете ссылку в Microsoft Excel, Excel предваряет ссылку меткой порядка байтов (BOM). Когда эта ссылка загружается в браузер, она не удаляет спецификацию из URL.

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

Вы можете воспроизвести эту проблему, скопировав ячейку и вставив ее непосредственно в Firefox, тем самым исключив Excel из картинки. Это также не помогает (иногда немного по-другому), но страдает от той же самой корневой проблемы. Если вы удалите "https" из вставленного URL и просто наберете его снова, вы заметите, что ссылка теперь работает правильно.

Это ограничение в том, что Excel хранит спецификацию в URL-адресе, а также в способе, которым браузер не может интерпретировать спецификацию.

На данный момент единственный обходной путь, о котором мы могли бы подумать, - это скопировать ссылку URL, вставить ее в браузер и получить доступ к странице.

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

-1

У меня недавно была эта проблема, когда функция гиперссылки в Excel указывала на перенаправление 301 на сайте WordPress. Я обновил 301, чтобы указать на новый документ, но ссылка в Excel продолжала вызывать старый документ. Мне удалось решить эту проблему, очистив кэш документов в IE, хотя я запускаю Excel 2016 на компьютере с Windows 10. Надеюсь это поможет.

-1

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

образец:

<HTML>
<HEAD>
<TITLE>Redirect</TITLE>
<META HTTP-EQUIV="refresh" CONTENT="0; URL=https://citiretailservices.citibankonline.com/RSnextgen/svc/launch/index.action?siteId=PLCN_GOODYEAR&langId=en_US#signon">
</HEAD>
<BODY>
Custom Redirect by Jason...
</BODY>
</HTML>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .