0

Webapi 2.0 を使用しています。vb/c4t+UuRLnQ2W/g8SQ== の値を持つ 1 つのパラメーターを渡していますモデル バインディングの後、コードで vb/c4t UuRLnQ2W/g8SQ== として authId の値を取得しています (+) 記号はスペースに置き換えられます。どうすればそれを手に入れることができるか教えてください。

URL: api/employee/1234?authId=vb/c4t+UuRLnQ2W/g8SQ==

[HttpGet]
public IHttpActionResult Get(string eid, string authId)
{
}
4

1 に答える 1

1

+sign は、クエリ文字列では異なる意味を持ちます。空間を表現するために使用されます。クエリ文字列で意味的に重要な別の文字は、クエリ文字列内のさまざまなペア&を区切るために使用されます。var=value

ほとんどのサーバー側スクリプトは、クエリ パラメータを使用する前にデコードするので、a+は適切にスペースに変換されます。ここで、リテラル+をクエリ文字列に含めたい場合は、%2B代わりに指定する必要があります。

yourString.replace("+","%2b")

代替方法 :URLEncodeコンテンツが失われていないことを確認するために、文字列値をクエリする必要があります。

+別の代替方法は、署名用の独自のコードを作成することです。たとえば、記号12sfdhjsj8722nsn2232dfsddを表します。++ 記号をコードに置き換えることができ、サーバー側では同じコードを使用して元に戻すことができます。

于 2018-10-23T05:43:02.073 に答える