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スプレッドシートからCookieベースのセッションにログインする必要があるURLをクリックすると、ほとんどのサイトはMicrosoft Discovery Agentをログインページにリダイレクトします。ユーザーが既にログインしている場合に、サイトがログインページリクエストを元のリクエストにリダイレクトできるほどスマートでない限り、ページが実際のブラウザにロードされると、手動で強制的にログインすることになります。ユーザーエクスペリエンスでは、すべてのリンクがログアウトされているように見えます。
ジョー

回答:


36

検索ページではなく検索結果を表示するには、使用しているURLにCookieからの追加情報が必要です。URLを別のブラウザーに貼り付ける(またはCookieを削除する)と、同じ結果が得られます。

ExcelでURLをクリックすると、デフォルトのブラウザーで開くようです。しかし、それは本当ではありません。ブラウザーで開く前に、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からリンクが機能する場合があります。(テストのためだけであり、永続的な解決策ではありません。)

http://www.godaddy.com/domains/search.aspx?domainToCheck=superuser.comのような、Cookieの一部の隠された情報に依存しないURLを使用すると、さらに運が良くなります。


素晴らしい情報、ありがとう。ログインする必要があるリンクを開くと、Wordでも同じように見えます。
marcvangend

1
これは正解としてマークする必要があります。
セロシンディス

1
どのような「機能」
CountMurphy

私は、(Windows上で)Excelが結論へのリダイレクトに従っていないことを発見しています。ウィキペディアリンク(wikipedia.org/wiki/Merck%20Sharp%20%26%20Dohme%20Corp)には3つのリダイレクトがありますが、Excelは404を報告します。リンクはOSX Excelで正常に機能します。
テクノメージ

10

これはExcelの障害です。Outlookの電子メールまたはワードパッドにリンクを貼り付け、そこからリンクを開くと、正常に機能します。

Excelは、ハイパーリンクを確認するために非表示のセッションを作成しないでください。それのポイントは何ですか。開くだけで、それ以外は何も必要ありません。MS Wordでも同じロジックを使用します。そこからも機能しません。Excelがバックグラウンドでリンクを検証しようとすると、認証されていない新しいセッションが作成されるため、ログインページなどにリダイレクトされます。その後、ブラウザーで元のURLを開く代わりに、ExcelはリダイレクトURLを開きます。彼らは本当に簡単なことを複雑にする方法を知っています。


セッションを作成しているのはExcelではありません。それを行うのはGoDaddyのWebサイトです。あるブラウザから別のブラウザにURLをコピーしても、検索結果は取得されません。別のコンピューターでExcelブックを使用しても失敗します。(それとは別に:確かにExcelはスマートになろうとしていますが、背景情報の詳細については他の回答を参照してください。)
Arjan

これが発生する理由は、Office製品がすべてのリンクを同じように扱い、別のOfficeドキュメントまたはWebページにリンクしようとしているかどうかがわからないためです。それを整理しようとしています。
pbarney

8

これは、ハイパーリンクが別のページにリダイレクトされるMicrosoftの既知のバグです。

  • Microsoft Internet Explorerを使用しています:
    • プロキシサーバーを使用
    • ローカルネットワークでHTTPリクエストを許可しないファイアウォールを使用している間
  • Internet Explorerはデフォルトのブラウザーではありません。
  • ForceShellExecuteレジストリキーが存在しないか、1に設定されていません

ここから修正を適用できます。

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


この修正により、関連する問題も解決されました。PowerPointでリンクをクリックすると、「要求した情報をダウンロードできません」というエラーメッセージが表示されることがあります。そのリンクで修正プログラムを適用すると、問題は解決しました。Chrome(v 60)をデフォルトのブラウザーとして使用しているWindows 10マシンでPowerPoint 2010を使用していることに注意してください。
ポール・デ・バロス

1

コメントとして追加するには多すぎるのではないかと心配しています。

最初のリンクは302ステータスコードを返します

w3c標準から:

要求されたリソースは、別のURIの下に一時的に存在します。リダイレクトはときどき変更される可能性があるため、クライアントは、今後のリクエストにRequest-URIを引き続き使用する必要があります。この応答は、Cache-ControlまたはExpiresヘッダーフィールドで示されている場合にのみキャッシュ可能です。

一時URIは、応答の[場所]フィールドで指定する必要があります。要求メソッドがHEADでない限り、応答のエンティティには、新しいURIへのハイパーリンクを持つ短いハイパーテキストノートを含める必要があります。

GETまたはHEAD以外のリクエストへの応答として302ステータスコードを受信した場合、ユーザーが確認できない限り、ユーザーエージェントはリクエストを自動的にリダイレクトしてはなりません。リクエストが発行された条件が変わる可能性があるためです。

  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は既に認証済みであることがわかり、新しいページを適切に開きます。ただし、サイトにログインしていない場合、期待どおりにログインページにリダイレクトされます。
しかし、Excelでまったく同じURLを同じ条件でクリックすると、ログインページのみが表示されるか、リモートサイトがサポートされていないブラウザーであると表示します。
問題は明らかにExcelに由来しています。その正確なスプレッドシートをPDFとして保存すると、PDFに表示されるハイパーリンクがクリックされたときに完全に機能するためです。
他の人が投稿したようにリンクを確認しようとするこの明らかに意図しないExcel / Officeの「機能」を修正する以外に、私が見つけた唯一の回避策はURL内の独自のパラメータを取り、新しいウィンドウを開くことができるローカルリダイレクトページを作成することでした(JavaScriptコードを提供してくれた他の人に感謝)excelハイパーリンクをhttp://mylocaldomain.com/redirect.html?ID=12345のようなものに変更して リダイレクトします。リダイレクトページは、制御するローカルサーバー上にあり、パラメーター12345必要な特定のエントリへのURLリダイレクトを行います。約10000リンクのSSの場合、これは問題なく機能します。

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

それは間違いなく迷惑です。回避策の1つは、ハイパーリンクにリダイレクトするローカルファイルへのリンクを作成することです。たとえば、次のようなもの:

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

私はHTMLについてあまり知りませんが、このローカルhtmlファイルに引数(つまり、URL)を渡すことができると便利です。


0

問題を再現できますが、Excelの問題ではありません。2番目のリンクにリダイレクトしているのは、実際にはGodaddyです。そのリンクをブラウザに貼り付けてみると、2番目のリンクにリダイレクトされます。

注:Excel 2007、Firefox 13.0.1でテスト済み


1
でも、リンクをブラウザに貼り付けると、最初のリンクにとどまります..それが奇妙な理由です.godaddyがURLにリンクを貼り付けるか、Excelファイルから移動することの違いをどのように検出できますか?

基本的に、ブラウザーが最初のリンクにアクセスしようとすると、サーバーは2番目のリンクにユーザーを送信して応答しません。Excelとは関係ありません。Chromeでもこれを確認しました。ブラウザで入力した場所を説明する状況を再現できず、リダイレクトしません。どのブラウザを使用していますか?

私はChromeを使用していますが、現在何が起こっているのかわかります。リクエストはセッションベースです。別のブラウザから開くと、リンクが表示されません.Excelからアクセスするとセッションが壊れますファイル

Chromeでこれらの状況をもう一度再現してみてください。2番目のリンクに到達すると確信しています。Excelは、デフォルトのブラウザでリンクを開いています。また、これでQが解決した場合は、感謝のマークを付けてください!

1
申し訳ありませんが、それは問題を解決しません..Excelもクロムでリンクを開きます。そのため、同じリンクをクロムに貼り付けるとうまくいきません。しかし、ハイパーリンクをクリックしても機能しません。 。シークレットモードでChromeで開くと、機能しません

0

日付スタンプに基づいてデータベースを処理および取得するサイトにのみ同じ問題がありました。URLを新しいセルにコピーします。日付を変更します。新しいURLをクリックしますが、古いURLを取得します。

ただし、新しいurlセルをクリックしてctlをクリックした場合、セル表示ウィンドウに移動し、そのウィンドウ内の任意の場所でカーソルをクリックしてから、URLの日付値が変わる別のセルをクリックし、urlをクリックすると正しいデータが取得されます。

これはすべてIEで。

URLをコピーすると、URLサイト情報が表示されるようです。セルを開いて変更しないとどのような魔法が起こるのかわかりませんが、ポインタを置くとURLが変更されます。私はこの種のExcelの常連です。おそらく私がそれを信用しない理由。



0

Excelブックを取得して自分のWebサーバーにリンクしようとしていたので、これをさらに調査することができました。Excelでリンクをクリックすると、サーバーに対して3つのクエリが生成されることに気付きました。

  1. GET HEAD(一時セッション付き)
  2. GET(一時セッション付き)
  3. GET(実際のセッションで)

しかし、リンクされたページがユーザーをリダイレクトしている場合、3番目のGETは表示されませんでした。代わりに、2番目のGETは新しいページにリダイレクトされ、セッションは一時的なままでした。つまり、ターゲットページで認証が必要な場合、ユーザーは実際に既に認証されていても、ログインページにリダイレクトされます。

これにより、ユーザーが認証された場合にユーザーをターゲットページにリダイレクトするランディングページを作成するというアイデアに至りました。そしてそれは動作します。3番目のGETが受信されると、サーバーはユーザーが認証されたことを通知し、ターゲットページにリダイレクトします。認証されていないユーザーの場合、ランディングページにはターゲットページへのリンクが表示されます。また、ユーザーがリンクをクリックすると、ユーザーはサインインページにリダイレクトされます。


-1

問題を再現し、開発者の調査結果は、リンクをMicrosoft Excelに貼り付けると、リンクの先頭にバイトオーダーマーク(BOM)が付けられることを示しています。このリンクがブラウザにロードされると、URLからBOMは削除されません。

URLをロードすると、ブラウザは接続が安全であること(https)を確認するいくつかのテストを実行し、これは誤ったBOMにより失敗します。このパラメータは安全なチャネルを介して送信する必要があるため、これにより最終的にリレー状態エラーが発生します。

この問題を再現するには、セルをコピーして直接Firefoxに貼り付け、Excelを画像から削除します。これも失敗しますが(わずかに異なる方法で行われることもあります)、同じルートの問題が発生します。貼り付けたURLから「https」を削除し、単純に再入力すると、リンクが正しく機能するようになります。

これは、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のハイパーリンク機能がWordPressサイトのリダイレクト301を指しているこの問題を抱えていました。新しいドキュメントを指すように301を更新しましたが、Excelのリンクは古いドキュメントを表示し続けました。Windows 10マシンでExcel 2016を実行している場合でも、IEのドキュメントキャッシュをクリアすることでのみこれを解決できました。お役に立てれば。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.