NSURLクラスのフラグメントの解釈

NSURLクラスの「fragment」メソッドは、URLのフラグメントを返してくれます。ただ、その動作は「#」以降をすべてフラグメントとして解釈するとなっているようです。
例えば、「https://www.rk-k.com/test.html#name=10?from=browser」というURLがあった場合、「fragment」メソッドと「query」メソッドの戻り値は次のようになります。
fragment : name=10?from=browser
query : nil
RFC 1808では、URLを次のように定義しています。
<scheme>://<net_loc>/<path>;<params>?<query>#<fragment>
つまり、定義的には、フラグメントは最後にあるべきで、クエリーはフラグメントよりも前にあるべきということです。そのため、「https://www.rk-k.com/test.html?from=browser#name=10」というURLでは、次のように値が戻ります。
fragment : name=10
query : from=browser
プログラム中でフラグメントを解釈するとき、クエリーが含まれているかもしれないことを注意しなければいけないようです。

投稿者プロフィール

林 晃
林 晃macOS/iOSアプリ/SDK/ミドルウェア開発が専門の開発者
アールケー開発代表。macOS/iOSアプリ/SDK/ミドルウェア開発が専門の開発者。ObjC/Swift/C++使い。豊富な開発実務経験を基に、教育コンテンツ開発、技術書執筆、技術指導、技術セミナー講師、企業内研修講師、行政・自治体職員研修講師も行います。

関連記事

  1. Mac Miniで minidlna を動かす

  2. 「iPadで学ぶ はじめてのプログラミング」の見本誌が届きました

  3. 「新フレームワーク探求記」という連載を始めます

  4. GreenHopperのボードにReopenも表示したい

  5. UTF-8 BOMあり

  6. 改訂版がもう少しで完成

最近の著書

  1. 基礎から学ぶ SwiftUI

最近の記事

  1. 2020.10.21

    GitLabへの移行