如何在Swift中设置UIWebView的"User-Agent"标头

seb*_*bbo 21 user-agent uiwebview nsurlrequest ios swift

我正在使用Xcode 6作为带有Swift的iOS应用程序.我有一个带有嵌入式UIWebView的简单ViewController.你可以在下面找到代码.现在我想更改User-AgentHTTP标头.我尝试使用该setValue方法,NSURLRequest但它不起作用(请参阅未注释的行).有谁知道这是怎么做到的吗?

import UIKit

class WebViewController: UIViewController {

    @IBOutlet weak var webView: UIWebView!

    override func viewDidAppear(animated: Bool) {
        var url = NSURL(string: "https://www.samplepage.com")

        var request = NSMutableURLRequest(URL: url)

        // request.setValue("Custom-Agent", forHTTPHeaderField: "User-Agent")

        webView.loadRequest(request)
    }
}
Run Code Online (Sandbox Code Playgroud)

seb*_*bbo 40

这将改变通过"普通"堆栈进行的任何调用的代理.

斯威夫特2:

NSUserDefaults.standardUserDefaults().registerDefaults(["UserAgent": "Custom-Agent"])
Run Code Online (Sandbox Code Playgroud)

斯威夫特3:

UserDefaults.standard.register(defaults: ["UserAgent": "custom value"])
Run Code Online (Sandbox Code Playgroud)

  • 这里有一个重要的警告:这将修改应用程序生成的所有http请求的用户代理(至少那些使用URL加载系统的用户 - NSURLConnection和朋友).这包括您应用中的所有UIWebView,而不仅仅是特定的UIWebView. (4认同)
  • @FarhadMammadli`registerDefaults`通常在`appDelegate`中的`didFinishLaunchingWithOptions`中调用 (2认同)
  • 为什么我们在 HTTP 标头中有一个连字符(如“User-Agent”)时要设置“UserAgent”?答案中是否有拼写错误,或者 UserDefaults 是否以某种方式将其转换为正确的标题名称?编辑:尝试了一下,看起来“UserAgent”实际上是正确的。 (2认同)

Pas*_*Kit 29

如果要附加到现有用户代理字符串(用于帮助适应用户代理的动态网页),则可以使用以下内容.

let userAgent = UIWebView().stringByEvaluatingJavaScriptFromString("navigator.userAgent")! + " Custom-Agent"
NSUserDefaults.standardUserDefaults().registerDefaults(["UserAgent" : userAgent])
Run Code Online (Sandbox Code Playgroud)