2016-09-16 5 views
3

TL; DR: У меня есть проект iOS (Swift) с WKWebView. Я хочу добавить заголовок запроса ко всем исходящим запросам (html, images, scripts, stylesheets и т. Д.) В этом WKWebView. Я не могу понять, как это сделать.Добавить заголовок запроса ко всем исходящим запросам в WKWebView

фона:
У меня есть приложение Swift IOS, которая использует WKWebView, чтобы сделать это HTML мнения. Эти представления размещены на наших серверах, которые разделены на производственную среду и промежуточную среду. Я настроил промежуточную среду с помощью Akamai, чтобы весь входящий запрос прошел по заголовку запроса, чтобы запрос был принят.

Вопрос:
В настоящее время я создал подкласс WKWebView, который переопределяет метод loadRequest, который выглядит примерно так:

override func loadRequest(request: NSURLRequest) -> WKNavigation? { 
    guard let mutableRequest = request.mutableCopy() as? NSMutableURLRequest else { 
     return super.loadRequest(request) 
    } 

    if let url = request.URL, host = url.host { 
     if (host == "staging.example.com") { 
      mutableRequest.setValue("secret-value", forHTTPHeaderField: "secret-header") 
     } 
    } 


    return super.loadRequest(mutableRequest) 
} 

Это попадается начальный запрос HTML, который работает как ожидается. Однако, так как эта страница во время загрузки загружает изображения, таблицы стилей и сценарии с одного и того же сервера, они не проходят через метод loadRequest и получают отказ, поскольку в их запросе отсутствует требуемый заголовок запроса.

Требования:
Он должен работать с WKWebView на прошивкой 8+.

ответ

2

Это невозможно с текущим API - нет смысла обрабатывать все запросы, сделанные WKWebView. Вы можете использовать UIWebView + custom url protocol (WKWebView не поддерживает его) и добавьте заголовок ко всем запросам для определенного сервера в качестве альтернативы.

+0

Bummer. Спасибо, что ответили! – Alexander

Смежные вопросы