web apiでデモログインサービスを作成し、その応答にクッキーを設定する必要があります。それ、どうやったら出来るの?あるいは、承認を行うためのより良い方法がありますか?HttpReponseMessageで応答クッキーを設定するにはどうすればよいですか?
答えて
System.Net.Http.Formatting.dll
への参照を追加し、HttpResponseHeadersExtensions
クラスで定義されAddCookies
拡張メソッドを使用します。
ここではa blog post describing this approach、MSDN topicです。
そのアセンブリは、あなたのためのオプションではない場合は、ここではこの前から私の古い答えはオプションだったのです。
古い答えは
私はHttpResponseMessage
の領域内に留まるアプローチを好むが、以下の
/// <summary>
/// Adds a Set-Cookie HTTP header for the specified cookie.
/// WARNING: support for cookie properties is currently VERY LIMITED.
/// </summary>
internal static void SetCookie(this HttpResponseHeaders headers, Cookie cookie) {
Requires.NotNull(headers, "headers");
Requires.NotNull(cookie, "cookie");
var cookieBuilder = new StringBuilder(HttpUtility.UrlEncode(cookie.Name) + "=" + HttpUtility.UrlEncode(cookie.Value));
if (cookie.HttpOnly) {
cookieBuilder.Append("; HttpOnly");
}
if (cookie.Secure) {
cookieBuilder.Append("; Secure");
}
headers.Add("Set-Cookie", cookieBuilder.ToString());
}
次に、あなたが応答でクッキーを含めることができますユニットとしてテスト可能ではなく、常にホストによっては適用されませんのHttpContextへの出血なし
HttpResponseMessage response;
response.Headers.SetCookie(new Cookie("name", "value"));
私は同意します。より良い選択肢のように見えます。受け入れられた回答を今後ユーザーを誘導するために変更しました。 –
これはもはや答えではない可能性がありますか?私はこのdllを見つけた唯一の方法はNugetを介しており、WebApi.Clientが2.0以上2.1未満であることを明示的に述べているので、この回答はWebApi 2用です。ASP.NET 4とIもうこのdllを見つけることができません。 –
@IsaacLlopis私は彼らが拡張dllからコアに移動したと思います。 –
CookieをHttpContext.Current.Response.Cookiesコレクションに追加できます。
var cookie = new HttpCookie("MyCookie", DateTime.Now.ToLongTimeString());
HttpContext.Current.Response.Cookies.Add(cookie);
ありがとう、ちょうど私が欲しかったし、自分自身を考えていたはずです。しかし、実際には 'HttpResponseMessage'で利用できると期待していました。 –
それは私の最初の推測でしたが、何らかの理由でそうではありませんでした。それは確かにテスト能力の方が良いでしょう。 – Maurice
この回答は、WebAPIを使用する方法に反するものです。 WebAPIからHttpContext.Currentを参照するべきではありません。自己ホストの場合は存在しません。ベータビットには、このようなヘルパーユーティリティの負荷がありませんでした。 RCは、代わりに使用する必要があるHttpResponseMessage.HeadersにAddCookies()拡張メソッドを追加しました。 – Andrew
- 1. springbootでWebサービス応答のメディアタイプを設定するにはどうすればよいですか?
- 2. Springブートレストサービスメソッドで応答ヘッダー値を設定するにはどうすればよいですか?
- 3. Laravel:1つの応答で複数のCookieを設定するにはどうすればよいですか?
- 4. NodeとExpressで非ブロッキング遅延応答を設定するにはどうすればよいですか?
- 5. Expressフレームワークでロケーション応答HTTPヘッダーを設定するにはどうすればよいですか?
- 6. jQueryデータテーブルの列にAJAX応答を設定するにはどうすればよいですか?
- 7. Springフレームワークを使用してカスタム応答フレーズを設定するにはどうすればよいですか?
- 8. TcpInboundGatewayでリクエストに応答するにはどうすればよいですか?
- 9. 静的(パブリック)ファイルのカスタム応答ヘッダーを設定するにはどうすればよいですか?
- 10. X-Frame-OptionsをangularJSの応答ヘッダーとして設定するにはどうすればよいですか?
- 11. どのように治療応答からクッキーを取得し、次のリクエストにクッキーを設定しますか?
- 12. 成功応答に対する応答エラーを変更するにはどうすればよいですか?
- 13. HTTP OPTIONSリクエストに応答するにはどうすればよいですか?
- 14. C#で「セッション」にクッキーの有効期限を設定するにはどうすればよいですか?
- 15. nwjsのwebviewタグ内でクッキーを取得して設定するにはどうすればよいですか?
- 16. SwiftのWkWebViewでクッキーを設定するにはどうすればよいですか?
- 17. ASP.NETコアでクッキーvalidateIntervalを設定するにはどうすればよいですか?
- 18. MAMP + MacOSx + PHPを使用してローカルホストにクッキーを設定するにはどうすればよいですか?
- 19. 石鹸リクエストのためにクッキーを設定するにはどうすればよいですか?
- 20. PHPで特定のHTTP応答ヘッダーを削除するにはどうすればよいですか?
- 21. swagger/OpenAPIで代替応答形式を指定するにはどうすればよいですか?
- 22. 特定のテーブルクラスに対応するコードを設定するにはどうすればよいですか?
- 23. json応答をユーザーに表示しないようにするにはどうすればよいですか?
- 24. 安心してリクエストを使用してクッキーを設定するにはどうすればよいですか?
- 25. 応答性の高いナビゲーションバーでハンバーガーメニューリンクを設計するにはどうすればいいですか?
- 26. ブートストラップ応答テーブルの固定サイズを1行に保持するにはどうすればよいですか?
- 27. プログラムのインストールに「はい」という応答をスクリプト化するにはどうすればよいですか?
- 28. rails3でクッキーを使用するにはどうすればよいですか?
- 29. Vapor - 特定のステータスコードでJSON応答を返すにはどうすればよいですか?
- 30. サーブレットからのアラート応答はどうすればよいですか?
HttpResponseMessageでCookieを設定できるようには見えません。このスレッドを見て、多分それが役立ちますhttp://stackoverflow.com/questions/5463431/setting-cookies-within-a-wcf-service –