这里用通过拦截webView的请求来给webView添加请求头
override func viewDidLoad() {
super.viewDidLoad()
setWebView()
}
private func setWebView(){
webView.frame = CGRect(x: 0, y: 0, width: ScreenW, height: ScreenH)
webView.delegate = self
view.addSubview(webView)
loadString(urlStr: urlStr)
}
/// 加载网页url
private func loadString(urlStr:String){
let url = URL.init(string: urlStr)
let request = URLRequest.init(url: url!)
webView.loadRequest(request)
}
extension PPWebViewVC : UIWebViewDelegate{
// 拦截请求,添加请求头
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebView.NavigationType) -> Bool {
let dic:Dictionary<String,AnyObject> = request.allHTTPHeaderFields! as Dictionary<String, AnyObject>
let userId = dic["userId"]
let shopId = dic["shopId"]
let dataName = dic["dataName"]
// 当userId和shopId不在请求头中就添加
if (userId == nil && shopId == nil) {
let newUrl = request.url
let newRequest:NSMutableURLRequest = NSMutableURLRequest.init(url: newUrl!)
newRequest.addValue("\(User().uid ?? -1)", forHTTPHeaderField: "userId")
newRequest.addValue("\(User().sid ?? -1)", forHTTPHeaderField: "shopId")
newRequest.addValue(String(format: "%@", dataName as! String).addingPercentEncoding(withAllowedCharacters: .urlUserAllowed)!, forHTTPHeaderField: "dataName") // 字符串utf8编码
webView.loadRequest(newRequest as URLRequest)
return false
}
return true
}
}
网友评论