我遇到了 Excel 超链接问题:我单击,比如说A1
,复制其中的链接(http://www.godaddy.com/domains/searchresults.aspx?ci=54814
),右键单击超链接并复制与链接相同的 URL(如果它没有自动检测和更改)。
当我点击它时,我被重定向到http://www.godaddy.com/domains/search.aspx?ci=53972
。
如果我直接将链接复制并粘贴到浏览器中,它可以正常工作(即,我不会被重定向到不同的 URL)。
有人知道发生了什么事吗?
答案1
您使用的 URL 需要 Cookie 中的更多信息才能显示搜索结果而不是搜索页面。将 URL 粘贴到其他浏览器中(或删除 cookie),您将获得相同的结果。
在 Excel 中单击 URL 似乎会在默认浏览器中打开它。但事实并非如此。在浏览器中打开它之前,Excel 首先运行Microsoft Office 协议发现。这将使用 Windows/Internet Explorer 组件来确定 URL 是否有效。(它不会将自己标识为 Internet Explorer,而是标识为“用户代理:Microsoft Office Existence Discovery”。)如果结果(不知何故)正常,则它将打开结果在您的默认浏览器中进行检查。
缺少饼干(更准确地说:缺少会话),GoDaddy 提供了 Internet Explorer 组件一些重定向。结果将在您的默认浏览器中打开。这就是您看到的 URL。
您的默认浏览器很可能不是 Internet Explorer?然后直接将 URL 粘贴到 IE 中并单击它以获取 cookie,这样也可能使 Excel 中的链接起作用。(仅用于测试;这不是永久解决方案。)
使用不依赖 cookie 中的某些隐藏信息的 URL 会更幸运,例如http://www.godaddy.com/domains/search.aspx?domainToCheck=superuser.com
答案2
这是 Excel 的错误。如果您将链接粘贴到 Outlook 电子邮件或写字板中并从那里打开链接,它将正常工作。
Excel 永远不应该创建隐藏会话来验证超链接。这有什么意义呢?它只需要打开它,没有别的。他们在 MS Word 中使用相同的逻辑。从那里开始也行不通。当 Excel 尝试在后台验证链接时,会创建未经身份验证的新会话,因此它会被重定向到登录页面或其他地方。之后,Excel 不会在浏览器中打开原始 URL,而是打开重定向 URL。他们真的知道如何把简单的事情复杂化。
答案3
这是 Microsoft 的一个已知错误,在以下情况下超链接会被重定向到另一个页面:
- 您正在使用 Microsoft Internet Explorer:
- 使用代理服务器
- 使用不允许本地网络上的 HTTP 请求的防火墙
- Internet Explorer 不是您的默认浏览器。
- 注册表项
ForceShellExecute
不存在或未设置为 1
您可以从这里应用修复:
答案4
恐怕这里的评论太多了,无法添加。
初始链接返回 302 状态代码
来自w3c 标准:
请求的资源暂时位于不同的 URI 下。由于重定向可能会偶尔更改,因此客户端应继续使用 Request-URI 进行将来的请求。仅当 Cache-Control 或 Expires 标头字段指示时,此响应才可缓存。
临时 URI 应由响应中的 Location 字段提供。除非请求方法是 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 调用时,重定向并不总是被遵守。