2013-05-29 6 views
9

Wenn Sie auf einen Link in Excel/Word klicken und über diesen Link zu einer Site gelangen, die den User Agent überprüft, um festzustellen, ob er unterstützt wird oder nicht, geht die Site fälschlicherweise davon aus, dass Sie MSIE 7.0 tatsächlich verwenden etwas anderes, sagen wir Chrome.Warum scheint das Klicken auf Links in Excel/Word meinen Nicht-IE-Browser als MSIE 7.0 zu tarnen?

Bei der Überprüfung des User Agents, der mit der Anfrage gesendet wurde, zeigt es, dass die Anfrage von MSIE 7.0 stammt - wenn MSIE 7.0 vom Standpunkt des Benutzers ganz offensichtlich nicht verwendet wird.

Was geht hier vor? Wie kann ich aufhören, Benutzern die falsche Nachricht zu zeigen?

Antwort

7

Das Problem scheint zu sein, dass Excel/Word versucht, den Link vorzuspeichern, wenn er angeklickt wird. Wenn es erfolgreich geladen wird, öffnet es Ihren Standard-Browser mit dem angegebenen Link. Es wird jedoch auch 302 Weiterleitungen folgen, wenn der Link vorab geladen wird. Wenn die Site MSIE7 nicht unterstützt (was jetzt eher üblich wird), wird sie höchstwahrscheinlich auf eine Info/Fehlerseite umgeleitet. Die Vorlade-Routine öffnet dann diese Seite in Ihrem Browser und nicht den ursprünglichen Link, was zu einer Meldung führt, die wahrscheinlich erklärt, warum MSIE 7.0 nicht unterstützt wird - aber den Benutzer verwirrt, der deutlich sieht, dass die Seite mit Chrome geladen wurde.

Gibt es eine empfohlene Art der Codierung um dies?

Wenn dies zuvor beantwortet wurde, lassen Sie es mich bitte wissen. Ich hoffe es hilft jemandem.

+0

Hallo, ich habe eine Antwort hinzugefügt, wenn Sie noch nach einem suchen. –

4

Die einfachste Lösung ist, die "IE 7 not supported page" mit einem Browser-Check zu versehen. Das Office-Programm, das die Weiterleitungen gefolgt hat (basierend auf der falschen User-Agent-Zeichenfolge, die es sendet) wird die Fehlerseite laden, eine HTTP 200-Antwort empfangen und DANN den Link zum Standardbrowser werfen. Der Browser fordert dann die Seite selbst mit der richtigen User-Agent-Zeichenfolge an.

  1. Office-Prozessanforderungen "example.com/example.html" mit User-Agent "compatible; MSIE 7.0"
  2. Server gibt http 302-Umleitung
  3. Office-Prozessanforderungen example.com/notsupported.html " example.com/notsupported.html "mit User-Agent "compatible; MSIE 7.0"
  4. Server gibt http 200 gefunden + example.com/notsupported.html
  5. Office-Prozess geht Link zum Standard-Browser
  6. Standard Browser-Anfragen" Beispiel.co m/notsupported.html“mit User-Agent " was auch immer der Browser Agent"
  7. Server gibt http 200 Gefunden + example.com/notsupported.html

Also, wenn der Browser die Seite anfordert können Sie den Benutzer verwenden Agent-Zeichenfolge, um zu sehen, ob Sie wirklich eine "nicht unterstützte" Seite zurücksenden oder die Anfrage an echten Inhalt umleiten möchten.

Dies wird jedoch das Problem der Suche nach der ursprünglichen URL, die umgeleitet wurde. Es gibt Probleme beim Teilen von Sitzungen zwischen dem Office-Prozess, der die Seite ursprünglich anfordert, und dem Browser, der schließlich die Endpunkt-URL übergeben hat. Eine Umgehung wäre hier, die ursprüngliche Anforderungs-URL als Abfragezeichenfolgenparameter in die Weiterleitungsantwort der Seite "Nicht unterstützt" aufzunehmen.