是否有一種簡單的方法來指定所有「正常」視圖是ASP.NET MVC應用程序將charset=utf-8
追加到Content-Type
? View()
缺少一個覆蓋,允許您指定Content-Type
和ActionResult
和朋友似乎也沒有暴露任何東西。動機顯然是爲了繞過Internet Explorer猜測「正確的」編碼類型,我反過來希望避免UTF-7 XSS攻擊。將「charset」添加到所有ASP.NET MVC HTTP響應
10
A
回答
20
也許這在你的web.config會做到神奇?
<configuration>
<system.web>
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
</system.web>
</configuration>
2
你可以寫一個屬性是:
public class CharsetAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
filterContext.HttpContext.Response.Headers["Content-Type"] += ";charset=utf-8";
}
}
隨意使它有點聰明,但這是一般的想法。將它添加到你的基礎控制器類,你的整個應用程序都被覆蓋了。
+0
如果我在集成管道模式下運行,那會很好用,但我不相信我可以在IIS6和更早版本中以相當的方式使用標頭,我呢? – 2009-11-16 18:37:42
+0
你當然可以添加它們;我們已經測試了這個,它工作。不過,我還沒有嘗試修改現有的標題。試一試;它很容易測試。 – 2009-11-16 18:48:11
0
在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;
}
}
用法:
public class OrderDetailsController : ApiController
{
[ResponseCharset("utf-8")] // can be windows-1251 etc.
public Object Get(string orderId)
{
// ....
}
}
基於@克雷格 - 斯頓茨的想法。
當然,您需要確保您提供正確的響應編碼,即內容的編碼應該與ResponseCharset屬性中指定的編碼相匹配。
當我使用Chrome測試一些mvc代碼時,它幫助了我很多,因爲它沒有在accept頭中指定編碼。
相關問題
- 1. ASP.NET:追加到HTTP響應
- 2. 有所不同:*錯誤地添加到HTTP標頭響應(asp.net MVC3)
- 3. 如何將http狀態添加到所有響應dto(數據傳輸對象)?
- 4. 使用ASP.NET MVC響應HTTP HEAD請求
- 5. 將MVC內容添加到現有的ASP.NET應用程序?
- 6. 將AntiForgeryToken添加到Asp.Net MVC表單
- 7. 將屬性添加到ASP.NET MVC 2 ViewUserControl
- 8. asp.net mvc將css添加到editorfor?
- 9. asp.net mvc將列表添加到viewmodel
- 10. 將ASP.NET MVC項目添加到現有的ASP.NET Web窗體應用程序
- 11. 使用rxjs將數據添加到http響應中
- 12. 如何將自定義HTTP標題添加到JAX-RS響應?
- 13. 將HTTP頭添加到index.html的響應中
- 14. asp.net mvc json.net響應
- 15. 將http://添加到沒有協議的所有鏈接
- 16. 將令牌參數添加到一個asp.net mvc 2站點內的所有url
- 17. 添加分頁到ASP.NET MVC
- 18. mvc 4 web api添加自定義響應http標頭
- 19. 將常見屬性附加到ASP.NET MVC中的所有視圖
- 20. 向HTML鏈接元素添加charset =「utf-8」是否有影響?
- 21. 如何將緩存驅動添加到ASP.NET MVC網站中的所有圖像
- 22. ASP.NET:將內容注入到所有響應流中
- 23. 我不能將Microsoft.SqlServer.Management.Common添加到我的ASP.NET MVC應用程序
- 24. 將jQuery添加到ASP.NET MVC應用程序
- 25. 使用Webpack將JavaScript模塊添加到ASP.NET MVC應用程序
- 26. 如何將javascript添加到Asp.net MVC應用程序
- 27. 如何將非NuGet包添加到ASP.NET MVC應用程序?
- 28. Asp.net將標題添加到所有頁面方法
- 29. 將AJAX響應數據添加到Div
- 30. 將Cookie添加到OkHttp3/Retrofit的響應
+1;我比我的建議更喜歡這個,儘管我相信兩者都可以發揮作用。 – 2009-11-16 18:48:42
僅供參考,無論如何,requestEncoding和responseEncoding的默認值都是utf-8。請參閱[MSDN](http://msdn.microsoft.com/zh-cn/library/hy4kkhe0.aspx) – Appetere 2012-03-16 09:08:35
已更新的[MSDN]鏈接(http://msdn.microsoft.com/zh-cn/library/hy4kkhe0 (v = VS.100)的.aspx) – Liam 2014-10-28 12:37:33