Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios URL请求头永久_Ios_Uiwebview_Swift3 - Fatal编程技术网

Ios URL请求头永久

Ios URL请求头永久,ios,uiwebview,swift3,Ios,Uiwebview,Swift3,我在webView中加载了一些url。我需要为该URL请求设置自定义标头。对于第一个请求,它会按预期工作,在服务器端接收头并相应地显示内容。然而,若我从显示的页面中打开另一个链接,标题将丢失,请求将在不带标题的情况下发送 我的幸运猜测是,头只是第一次添加,每次发送加载url的请求时,我都必须添加头。然而,我找不到方法在哪里可以这样做 目前我正在viewDidLoad中设置标题 override func viewDidLoad() { super.viewDidLoad()

我在webView中加载了一些url。我需要为该URL请求设置自定义标头。对于第一个请求,它会按预期工作,在服务器端接收头并相应地显示内容。然而,若我从显示的页面中打开另一个链接,标题将丢失,请求将在不带标题的情况下发送

我的幸运猜测是,头只是第一次添加,每次发送加载url的请求时,我都必须添加头。然而,我找不到方法在哪里可以这样做

目前我正在viewDidLoad中设置标题

override func viewDidLoad() {
    super.viewDidLoad()


    myWebView.delegate = self

    let url = URL(string: "https://mywebsite.com");
    var requestobj = URLRequest(url: url!);
    requestobj.addValue("my_request_id", forHTTPHeaderField: "X-Requested-With");

    myWebView.loadRequest(requestobj);

}

是我遗漏了什么,还是我应该为每个请求在不同的位置添加标题?

是的,您应该在每次创建请求时添加自定义标题。

好的,多亏了iPhonec,指向shouldStartLoadWith。我可以用它来理解is请求新的或旧的,并通过这样做来解决我的问题:

func webView(_ webView: UIWebView,
                      shouldStartLoadWith request: URLRequest,
                      navigationType: UIWebViewNavigationType) -> Bool{


   if(navigationType == UIWebViewNavigationType.linkClicked) 
   {

        var req = request; 

        req.addValue("my_request_id", forHTTPHeaderField: "X-Requested-With"); 


        self.myWebView.loadRequest(req); 
            return false; 

    }
    else {
        return true; 
    }



}
所以这里我检查,如果导航类型是clickedLink,那么我不加载当前请求,而是复制它,重新应用自定义标题并将其加载到myWebView中。
如果未单击navigationType链接,我将继续请求而不做任何更改。

实现此委托函数
func-webView(\uwebview:UIWebView,shouldStartLoadWith-request:URLRequest,navigationType:UIWebViewNavigationType)->Bool
对于webview中的所有新请求,将调用此方法。您可以获取请求的url,如果url不是父url,则可以使用添加的标题发出新请求。这可能会起作用。然而,这里的请求是不可变的,所以我必须将其复制到新的var,然后添加值,但我如何才能将其设置回webView?您需要创建新的请求,如果您的webView支持导航,那么您需要维护url数组,而不是每次导航都需要从数组创建新的请求。