2

HTML5 シングル ページ アプリを作成しています。ユーザーが現在のアプリケーションの状態を保持して後で使用できるようにしたいと考えています。特別に細工されたクエリ部分を使用して、自分のページへのリンク URL を作成することでこれを実現したいと考えています。URL を使用して再度呼び出されると、アプリケーションはクエリ部分を解析し、保存された状態を再作成します。

現在、状態の一部はリストであり、その項目は数値と関連するテキストです。浮動小数点数値とテキストは一意である必要はありません。

このような:

4.54  first
12.1  another
12.1  more
34    more

私の意図は、次のような URL を作成することです。

www.myappdomain.com/SinglePage.html?4.54=first&12.1=another&12.1=more&34=more

これは合法的な URL ですか? テキストの適切なエンコーディングが与えられた場合、これは実際に機能しますか?

Alan Skorkin による URL についてすべての開発者が知っておくべきことを読んだことがあります。この記事は URL について一般的に推奨できます。また、このAnswer about URL character usageも読んでいます。

私には、そのようにすることは合法のように思えますが、私が持っている可能性のある一意ではないキーに関する情報や、一般的にクエリ部分のキーとしての数値に関する情報が見つからないため、少し不快に感じます。

編集: 私はそれを機能させました。以下を参照してください (リンクが切れたら教えてください): http://quir.li/player.html?media=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv %3D0VqTwnAuHws&title=What%20makes%20you%20beautiful&artist=The%20piano%20guys%20covering%20One%20Republic&album=Youtube&6.49=Intro&30.12=Knocking%20part&46.02=Real%20playing&51.5=Piano%20forte&93.32=Stringified .35=Vocals&139.38=Key%20cover%20jam&150.16=Good%20morning%20sky&173.96=Final%20chord

4

3 に答える 3

2

これは、URI仕様による有効なURLです-https://www.rfc-editor.org/rfc/rfc3986。ただし、仕様ではURIの一般的な構文のみが定義されているため、これが実際に機能するかどうかは別の問題です。

クエリ部分の重複キーに対して何をすべきかについての指定がないため(重複HTTP GETクエリキーの権限のある位置を参照)、異なるソフトウェアフレームワークはそのようなURIを異なる方法で処理します。ただし、ほとんどのフレームワークは、重複するキーを同じキーを持つ複数の値として正しく検出し、そのような値を指定されたキーの値の単一の配列/リストにグループ化します(指定されたキーで最後の値を使用し、以前のすべての値を破棄するのではありません)そのキー)。キーはテキスト文字列として解析されるため、キーとして数字を使用することも問題ありません。要するに:あなたは安全でなければなりません。

于 2012-09-17T19:19:28.087 に答える
0

この投稿は、非一意キーが無効であるという仕様がないことを示唆しています。

重複するHTTPGETクエリキーの権限のある位置

数字キーについて具体的なことは何も見つからないようです。

ただし、何らかの理由で一意でない数値キーを使用したくない場合は、これが回避策になる可能性があります。基本的なエンコーディングを使用して、数値を文字列にマップします。基本的なものは、1-a、2-b、3-c、4-d ... 9-i、0-jです。と '。' 'k'にすることができます('。'がURLパラメータの有効な文字であるかどうかについての仕様がない場合)次に、たとえば、21.3にエンコードしbakcます。また、エンコードされたキーの最後に数字を追加して、キーが一意であることを確認することもできます。これらの数値は、デコード中は無視されます(または、パラメーターを区別するのに役立ちます)。次に、最初の21.3はbakc1、次のbakc2などにエンコードされます)

于 2012-09-17T19:46:42.400 に答える
0

データを渡すのは良い方法ではないと思います。クエリ文字列パラメーターは、一般に名前でアクセスできるパラメーターと見なされます。ここでは、実際にいくつかのデータをパラメーターとして渡しますが、技術的な観点からは、これを行うことができます。コードはやや難読化されているため、JSON エンコーディングを使用して、このデータを 1 つのパラメーターで渡します。

于 2012-09-17T19:11:32.433 に答える