Гіперпосилання Excel не перенаправляється належним чином (помилка?)


33

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

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

Якщо я скопіюю та вставив посилання безпосередньо у браузер, він справно працює (тобто я не переспрямований на іншу URL-адресу).

Хтось знає, що відбувається?


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

Відповіді:


36

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

Натиснувши URL-адресу в Excel, схоже, відкриється її у вашому браузері за замовчуванням. Але це насправді не так. Перш ніж відкрити його у своєму браузері, Excel спочатку запускає Microsoft Office Protocol Discovery . При цьому використовується компонент Windows / Internet Explorer, щоб визначити, чи працює URL-адреса. (Він ідентифікує себе не як Internet Explorer, а як "Агент користувача: Microsoft Office Existence Discovery".) І якщо результати (якимось чином) добре, то він відкриє результат цієї перевірки у вашому браузері за замовчуванням.

Не вистачаючи файлів 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 ( 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 заплутався, намагаючись бути розумним; див. Інші відповіді для отримання додаткової інформації.)
Арджан

Причина цього відбувається в тому, що продукти 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. Оскільки перенаправлення може бути змінено в одному випадку, клієнт ДОЛЖЕН би використовувати URI-запит для майбутніх запитів. Ця відповідь є кешованою лише тоді, коли вона вказана в полі заголовка Cache-Control або Expires.

Тимчасовий URI повинен бути вказаний полем Location у відповіді. Якщо метод запиту не був HEAD, суть відповіді ДОЛЖНА містити коротку примітку гіпертексту з гіперпосиланням на нові URI (s).

Якщо код статусу 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>

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-файл.


0

Я можу повторити вашу проблему, проте це не проблема Excel. Насправді Godaddy перенаправляє вас до другої ланки. Спробуйте вставити це посилання у свій веб-переглядач, і ви побачите його переспрямування на друге.

Примітки: Тестовано на Excel 2007, Firefox 13.0.1


1
хм .. але коли я вставляю посилання у браузер, я залишаюся на першому посиланні .. ось чому це wierd .. як godaddy здатний виявити різницю між вставкою посилання в URL або навігацією з файлу excel?

Вони, як правило, не в тому випадку, коли ваш браузер намагається відвідати перше посилання, їх сервер відповідає, надсилаючи вас на друге. Це не має нічого спільного з Excel. Я перевірив це також на Chrome. Я не можу відтворити описані вами обставини, де ви вводите його у своєму браузері, і він не переспрямовує. Який браузер ви використовуєте?

я використовую Chrome, але я бачу, що зараз відбувається .. запит базується на сеансі .. тому, коли я відкриваюсь з іншого браузера, я не можу бачити посилання .. і якимось чином сеанс порушується під час доступу з програми файл ..

Спробуйте знову відтворити ці обставини за допомогою Chrome, я впевнений, що ви опинитесь на другому посиланні. Excel лише відкриває посилання зі своїм браузером за замовчуванням. Також якщо це вирішує ваш Q, будь ласка, позначте його подякою!

1
Вибачте, але це не вирішує проблему .. excel також відкриває посилання з chrome, тому це wierd..when я вставляю ту саму посилання в chrome - вона працює .. але коли я натискаю на гіперпосилання, вона не .. Коли я відкрию його в хромі в режимі інкогніто, він також не працює ...

0

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

Однак якщо я натиснув на нову клітинку URL, перейдіть до вікна відображення клітинки, клацніть на курсорі будь-де в цьому вікні, потім натисніть на іншу клітинку, змінити значення дати URL-адреси, і натиснувши на URL-адресу, ви отримаєте мені потрібні дані.

Все це в IE.

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



0

Мені вдалося дослідити це далі, коли я намагався отримати робочу книгу Excel для посилання на власний веб-сервер. Я помітив, що натискання посилання в Excel призвело до трьох запитів до сервера.

  1. Отримати голову (з тимчасовим сеансом)
  2. GET (з тимчасовим сеансом)
  3. GET (з реальною сесією)

Але якщо пов’язана сторінка перенаправляє користувача, я не побачив третього GET. Натомість другу GET було переспрямовано на нову сторінку, і сеанс залишився тимчасовим. Що означає, що якщо цільова сторінка вимагає автентифікації, користувач буде перенаправлений на сторінку входу, навіть якщо він насправді вже автентифікований.

Це підштовхує мене до ідеї створити цільову сторінку, яка перенаправляє користувача до цільової сторінки, якщо користувач має автентифікацію. І це працює. Після отримання третього GET сервер помічає, що користувач має автентифікацію та перенаправляє на цільову сторінку. Для несанкціонованого користувача цільова сторінка показує посилання на цільову сторінку. І коли користувач натисне посилання, користувач буде перенаправлений на сторінку входу.


-1

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

Завантажуючи URL-адресу, браузер виконує кілька тестів, щоб переконатися, що з'єднання надійне (https), і це не вдається через помилку BOM. Це в кінцевому підсумку викликає помилку стану ретрансляції, оскільки цей параметр повинен надсилатися через захищений канал.

Ви можете відтворити цю проблему, скопіювавши клітинку та вставивши її безпосередньо у firefox, тим самим вийнявши Excel із зображення. Це також не вдається (іноді дещо по-іншому), але страждає від тієї ж кореневої проблеми. Якщо ви вилучите "https" із вставленої URL-адреси та просто вкажіть її знову, ви помітите, що посилання зараз працює правильно.

Це обмеження в тому, що Excel зберігає BOM в URL-адресі та спосіб, яким браузер не може інтерпретувати BOM.

На даний момент єдиним вирішенням, про який ми могли б придумати, є скопіювати посилання 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. Сподіваюся, це допомагає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.