[IOS] WebView에서 HTTP 요청에 헤더를 추가하여 referrer 설정
iOS의 WebView에서 HTTP 요청에 헤더를 추가하여 referrer를 설정하려면, UIWebViewDelegate
를 사용하여 요청을 수정해야 합니다. 하지만 iOS 8 이후부터는 UIWebView
가 WKWebView
로 대체되었으며, 더 이상 UIWebViewDelegate
를 사용할 수 없습니다. 따라서 아래의 예시에서는 WKWebView
와 WKNavigationDelegate
를 사용하는 방법을 제공하겠습니다.
다음은 Swift 언어를 사용한 예시 코드입니다:
import UIKit
import WebKit
class ViewController: UIViewController, WKNavigationDelegate {
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
// WKWebView 생성
webView = WKWebView(frame: view.bounds)
webView.navigationDelegate = self
view.addSubview(webView)
// URLRequest 생성
if let url = URL(string: "YOUR_URL_HERE") {
var request = URLRequest(url: url)
// Referrer 헤더 추가
request.setValue("xxxxxx.com", forHTTPHeaderField: "Referer")
// WKWebView로 요청 로드
webView.load(request)
}
}
// WKNavigationDelegate 메서드 - 페이지 로드 시작 시 호출됨
func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
// 페이지 로드 시작
}
// WKNavigationDelegate 메서드 - 페이지 로드 완료 시 호출됨
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
// 페이지 로드 완료
}
// WKNavigationDelegate 메서드 - 페이지 로드 실패 시 호출됨
func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
// 페이지 로드 실패
}
// 이외의 다른 WKNavigationDelegate 메서드도 필요한 경우 추가할 수 있습니다.
}
위의 예시 코드에서 “YOUR_URL_HERE”를 웹 페이지의 실제 URL로 바꾸고, Referer
헤더를 추가하려는 웹사이트의 도메인으로 설정하십시오. 이 코드는 WKWebView
를 만들고, URLRequest
를 사용하여 요청을 로드하기 전에 헤더를 설정합니다.
또한, WKNavigationDelegate
를 구현하여 페이지 로드 상태를 추적할 수 있습니다. 위의 예시에서는 didStartProvisionalNavigation
, didFinish
, didFailProvisionalNavigation
메서드를 구현하여 페이지 로드 시작, 완료, 실패 시에 각각 호출되도록 했습니다. 필요에 따라 해당 메서드를 수정하거나 다른 메서드를 추가하여 원하는 작업을 수행할 수 있습니다.
참고: WKWebView
는 iOS 8 이상에서 사용 가능합니다. 이전 버전의 iOS를 지원해야 하는 경우 UIWebView
를 대신 사용해야 합니다.