Гиперссылка в Excel не перенаправляет должным образом (ошибка?)

33

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

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

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

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

Andrej
источник
3
Я столкнулся с той же проблемой с URL, который требует аутентификации. Если щелкнуть электронную таблицу Excel по URL-адресу, который требует входа в сеанс на основе файлов cookie, большинство сайтов перенаправят агент Microsoft Discovery на страницу входа. Если сайт не достаточно умен, чтобы перенаправить запрос страницы входа обратно на исходный запрос в случае, если пользователь уже вошел в систему, вы вынуждены будете войти в систему вручную, как только страница загрузится в вашем реальном браузере. Пользовательский опыт заключается в том, что все ссылки, кажется, вышли из системы.
Джо

Ответы:

36

Используемому 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.

Арьян
источник
Отличная информация, спасибо. Я вижу то же самое в Word при открытии ссылки, по которой вы должны войти.
marcvangend
1
Это должно быть помечено как правильный ответ.
Селосиндис
1
что за "особенность"
CountMurphy
Я считаю, что Excel (в Windows) не следует перенаправлению к своему выводу. Со ссылкой на википедию ( wikipedia.org/wiki/Merck%20Sharp%20%26%20Dohme%20Corp ) есть три перенаправления, но в Excel сообщается 404. Ссылка отлично работает в OSX Excel.
техномаг
10

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

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

жарить
источник
Это не Excel, который создает сессии. Это сайт GoDaddy, который делает это. Копирование URL из одного браузера в другой также НЕ приведет к получению результатов поиска. Использование книги Excel на другом компьютере также не удастся. (Кроме того: действительно, Excel запутывается, пытаясь быть умным; см. Другие ответы для получения дополнительной информации.)
Arjan
Причина этого заключается в том, что продукты Office обрабатывают все ссылки одинаково, и он не знает, пытаетесь ли вы дать ссылку на другой офисный документ или веб-страницу. Он пытается разобраться с этим.
pbarney
8

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

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

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

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

Каушик Баруа
источник
Это исправление также решило связанную проблему для меня. При нажатии на ссылки в PowerPoint я иногда получаю сообщение об ошибке «не могу загрузить запрошенную информацию». Применение исправления по этой ссылке решило проблему. Обратите внимание, что я использую PowerPoint 2010 на компьютере с Windows 10 с Chrome (v 60) в качестве браузера по умолчанию.
Пол де Баррос
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 перенаправление не всегда выполняется.

Джулиан Найт
источник
1
Я бы добавил это как комментарий к ответу @ xlm, но он слишком большой. Я понимаю, что это не ответ.
Джулиан Найт
1

Я обнаружил, что эта проблема возникает, когда целевой 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>
JWalter
источник
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-файл.

q335r49
источник
0

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

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


источник
1
хм ... но когда я вставляю ссылку в браузер, я остаюсь на первой ссылке ... вот почему она странная ... как Godaddy может обнаружить разницу между вставкой ссылки в URL или навигацией из файла Excel?
В принципе, когда ваш браузер пытается перейти по первой ссылке, они не отвечают, отправляя вас на вторую. Это не имеет ничего общего с Excel. Я проверял это и в Chrome. Я не могу воспроизвести описанные вами обстоятельства, когда вы вводите его в браузере, и он не перенаправляется. Какой браузер вы используете?
Я использую Chrome, но я вижу, что происходит сейчас .. запрос основан на сеансе ... поэтому, когда я открываю из другого браузера, я не вижу ссылку ... и каким-то образом сеанс прерывается при доступе из Excel файл ..
Попробуйте воспроизвести эти обстоятельства снова с помощью Chrome, я уверен, что вы окажетесь на второй ссылке. Excel просто открывает ссылку в браузере по умолчанию. Также, если это решает ваш вопрос, пожалуйста, отметьте это спасибо!
1
извините, но это не решает проблему ... Excel открывает ссылку с Chrome тоже, поэтому он странный .. когда я вставляю ту же ссылку в Chrome - это работает .. но когда я нажимаю на гиперссылку, это не .. Когда я открываю его в Chrome в режиме инкогнито, он тоже не работает ...
0

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

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

Все это в IE.

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

Дэн
источник
0

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

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

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

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

Mika
источник
-1

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

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

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

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

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

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

Адольфо Гусман младший
источник
-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>
Джейсон
источник
-1

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

отметка
источник