0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

iOSアプリでHTML・JavaScriptの実行が必要なときに、リファラーを設定する方法

Last updated at Posted at 2024-12-31

システム内容(ざっくり)

とあるiOSアプリを作っているのだが、新たに実装の必要のある機能で必須として使う必要のあるライブラリがHTML・JavaScriptが前提なものになっていて、しかしiOSアプリなのでWKWebViewを用いて裏側でHTML・JavaScriptを実行するような処理を作った。

そのライブラリのメソッドを呼ぶことでAPIを呼ぶような処理になっているが、エラーとなった。それは、リファラーが空であることが原因だった。

原因

iosアプリとしてではなくブラウザ向けのシステムとしてchromeなどの通常のブラウザで実行したら、当然デフォルトでリファラーは入っているが、iOSアプリの内部ブラウザからアクセスした場合はリファラーが入っていないようだった。

WKWebViewを使っている場合、HTMLがローカルにあるとリファラーが空になる。これは、リファラーは通常リクエスト元のURLを示すため、ローカルファイルの場合はリファラーが設定されない

解決策

baseURLを指定するだけでよかった。

anime-suko.swift
var webView: WKWebView!

self.webView.loadHTMLString(htmlString, baseURL: URL(string: Configuration.shared.apiUrl))

baseURLを指定すると、WKWebViewはそのURLを基準としてHTMLコンテンツを読み込みます。Refererヘッダーは、リクエストがどのページから来たのかを示すもので、サーバー側でリクエストの出所を確認するために使われます。これを指定したらなんとかサーバー側でリファラーが入るようにできた。
image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?