修改 URL 在 UIWebView 中加载请求之前

Modify URL Before Loading Request in UIWebView

我使用 UIWebView.

从我的 Web 应用程序创建了一个本机应用程序

我的网络应用程序是一个基本的 CMS,包含一些静态页面、一些类别页面和一些详细信息页面。

现在我需要检查请求是来自网络应用程序还是本机应用程序。

为此我有两种可能性:

第一个解决方案:修改URL并在服务器端检查URL:

@IBOutlet var WebView: UIWebView!

override func viewDidLoad() {
    super.viewDidLoad()

    loadWebPage()
}

func loadWebPage() {
    let url = NSURL(string: "http://localhost:8888?apptype=native")
    let request = NSURLRequest(URL: url!) 
    WebView.loadRequest(request)
}

当我在服务器端检查参数是否存在于第一页时,它工作正常,但是当我切换到其他页面(类别等)时,条件失败。

第二种解决方案:我尝试设置cookies:

@IBOutlet var WebView: UIWebView!

override func viewDidLoad() {
    super.viewDidLoad()

    loadWebPage()
}

func loadWebPage() {
    let url = NSURL(string: "http://localhost:8888")
    let request = NSURLRequest(URL: url!)

    var cookies = NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies as! [NSHTTPCookie]

    var reqCookies:[AnyObject] = []

    for aCookie in cookies {

        reqCookies += [aCookie]

    }

    var headers = NSHTTPCookie.requestHeaderFieldsWithCookies(reqCookies)

    WebView.loadRequest(request)
}

但我如何在响应中添加此示例中的 cookie,以便我可以在服务器端检索它们?

是否有任何其他解决方案或如何修改我现有的解决方案?

实施 UIWebViewDelegate 方法 webView:shouldStartLoadWithRequest:navigationType:

当用户点击 webview 中的 link 时,将调用此委托方法。将 NSURLRequestrequest.url 传递给委托方法并创建一个新的 NSURLRequest 并在 request.url 属性.[=18 后附加 ?apptype=native =]