ASP.NET MVCアプリケーションであるすべての「通常の」ビューを指定する簡単な方法は、Content-Type
に追加されたcharset=utf-8
ですか? View()
には、Content-Type
とActionResult
を指定できるようなオーバーライドがなく、友人からも何も公開されていないようです。その動機は明らかに、「正しい」エンコーディングタイプを推測するInternet Explorerを回避することです。これはUTF-7 XSS攻撃を回避するために行います。すべてのASP.NET MVC HTTPレスポンスに「charset」を追加
答えて
多分あなたのweb.configのこれは魔法をしますか?
<configuration>
<system.web>
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
</system.web>
</configuration>
あなたはそれのために属性を記述することができます。
public class CharsetAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
filterContext.HttpContext.Response.Headers["Content-Type"] += ";charset=utf-8";
}
}
は、それは少し賢くお気軽に、それは一般的な考えです。ベースコントローラクラスに追加すると、アプリ全体がカバーされます。
統合パイプラインモードで実行しているとうまくいくはずですが、私はIIS6以前ではヘッダーをつぶすことはできません。 –
確かにそれらを追加できます。私たちはこれをテストして、動作します。私は、既存のヘッダーを変更しようとしていません。試してみます;テストするのは簡単です。 –
はMVC 5で、これはトリックを行うことができます。
public class ResponseCharset : ActionFilterAttribute
{
private string Charset;
public ResponseCharset(string charset = "utf-8") {
Charset = charset;
}
public override void OnActionExecuted(HttpActionExecutedContext filterContext)
{
filterContext.Response.Content.Headers.ContentType.CharSet = Charset;
}
}
用途:@クレイグ・stuntzの考えに基づき
public class OrderDetailsController : ApiController
{
[ResponseCharset("utf-8")] // can be windows-1251 etc.
public Object Get(string orderId)
{
// ....
}
}
。
もちろん、レスポンスエンコーディングを確実に行う必要があります。つまり、コンテンツのエンコーディングはResponseCharset属性で指定されたものと一致する必要があります。
Chromeでいくつかのmvcコードをテストしていたときに、acceptヘッダーのエンコーディングが指定されていないため、多くの助けになりました。
- 1. ASP.NET MVC 3:セクションに追加
- 2. ASP.Net MVC URLルーティングですべてのアクションにプレフィックスを追加するには?
- 3. ASP.NET MVC - すべてのURLにGET値を追加... ActionLink?ルーティング?どうやって?
- 4. スナップフレームワークのすべてのレスポンスにヘッダーを追加します
- 5. Spring HandlerInterceptorAdapterのhttpレスポンスにヘッダを追加するには?
- 6. asp.net/mvcのコントローラー内のアクション内でHTTP応答にヘッダーを追加
- 7. 既存のASP.NET WebフォームアプリケーションにASP.NET MVCプロジェクトを追加する
- 8. すべてのhttpリクエスト(angular2)にプリローダーを追加するには?
- 9. ユーザーリンクを追加するASP.NET MVC
- 10. ASP.NET MVCすべてのユーザーリスト
- 11. プロトコルなしのすべてのリンクにhttp://を追加する
- 12. マシン上のすべての* HTTPリクエストにヘッダを追加する
- 13. Asp.net MVCのボタンクリックでエラーメッセージを追加
- 14. スガッガーのすべてのパスに401レスポンスを追加するには
- 15. ノード内のNodeRED httpはContent-Typeをapplication/octet-streamに設定してもcharset = utf-8を追加します
- 16. AWSラムダASP.NETコアの追加のMVCコントローラ
- 17. ASP.NET MVC 3でヘッダーを追加
- 18. なぜASP.NETフレームワークがレスポンスに 'X-Powered-By:ASP.NET' HTTPヘッダーを追加するのですか?
- 19. 発信者の追加MVC ASP.NET
- 20. httpハンドラとasp.net mvc
- 21. は、すべてのASP.NETコアMVCページ
- 22. すべてのURLをhttp:// wwwとして開く方法。 asp.netのhttp://の代わりにmvc
- 23. Jersey/JAX-RS(Scala)のすべてのレスポンスにクッキーを追加する
- 24. ajaxレスポンスにテーブルを追加
- 25. httpヘッダーContent-Typeにスペースを追加するには、次のようにします:text/xml; charset = utf-8
- 26. 既存のASP.NETアプリケーションにMVCコンテンツを追加するには?
- 27. asp.net mvcのHtml.TextBoxにhtml5データ属性を追加するには?
- 28. ASP.NET MVCのリクエストにヘッダーを追加するには
- 29. asp.net mvcに新しいプロパティを追加して
- 30. Asp.net Mvc - リストに追加して一度に保存
+1;私はこれが私の提案よりも好きですが、私はどちらもうまくいくと信じています。 –
参考のために、requestEncodingとresponseEncodingの両方のデフォルトは、とにかくutf-8です。 [MSDN](http://msdn.microsoft.com/en-us/library/hy4kkhe0.aspx) – Appetere
[MSDN](http://msdn.microsoft.com/en-gb/library/hy4kkhe0)へのリンクが更新されました(v = vs.100).aspx) – Liam