【问题标题】:UIWebview returns error and adds m. to request URLUIWebview 返回错误并添加 m。请求网址
【发布时间】:2026-02-22 09:25:01
【问题描述】:

我正在尝试将 URL 加载到 webview。

假设网址是:http://www.somepage.com/

但由于某种原因,当我在 webview 中加载 url 时,它会添加一个 m。 (URL 看起来像这样:http://m.somepage.com),它似乎正在尝试添加网站的移动版本。该网站没有移动版本,因此它试图加载一个不存在的网址。

在 webview 的 shouldStartLoadWithRequest 委托方法中,它返回正确的 URL。在 didFailWithError 方法中,我可以说错误:Error Domain=NSURLErrorDomain Code=-1003“找不到具有指定主机名的服务器。” UserInfo=0x5a7c670 {NSErrorFailingURLStringKey=http://m.somepage.com

知道如何解决这个问题吗?可以换m吗以某种方式使用 www?

【问题讨论】:

    标签: iphone objective-c xcode uiwebview


    【解决方案1】:

    这肯定是网络服务器的问题。它将您的请求重定向到不存在的域。如果您有权访问网络服务器的配置,则需要在此处修复此问题。

    如果您无权访问网络服务器,则避免此特定问题的唯一机会是发送不同的用户代理字符串,以便网络服务器不再认为您正在从移动设备查看页面。但是,似乎没有一种简单的方法可以逐个站点地执行此操作。

    相关堆栈溢出问题:
    Change User Agent in UIWebView (iPhone SDK)

    【讨论】:

    • 我已经尝试过了,但它不起作用。我无权访问网络服务器。几天前我和他们谈过,他们说他们没有计划拥有一个移动网站。奇怪的是,我的 iPhone 上有一个旧版本的应用程序,它运行良好。我现在正在重建它,使用相同的 webview 代码,但现在它不起作用。
    • 但是你说Mobile Safari也以同样的方式失败了。这意味着您的应用程序没有任何问题。您确定更改了 User-Agent 字符串吗?尝试将其设置为桌面 Firefox、Chrome 或 Safari 使用的那个。
    【解决方案2】:

    我使用 UIWebView 没有任何问题。您能否检查您正在访问的网站是否有重定向到移动版本的代码?

    【讨论】:

    • 我确定他们不会。我试图在模拟器的 Safari 浏览器中打开正确的 URL,但我得到了同样的错误。
    • @Magnus 在这种情况下,我认为您需要查看是否有负载平衡设备(F5 或类似设备)正在检查用户代理并尝试重定向到不同风格的网站(即使它不存在)。