क्या सभी "सामान्य" विचार निर्दिष्ट करने का कोई आसान तरीका है एएसपी.नेट एमवीसी ऐप Content-Type
में जोड़ा गया है? View()
में ओवरराइड की कमी है जो आपको Content-Type
, और ActionResult
निर्दिष्ट करने की अनुमति देता है और दोस्तों को कुछ भी बेनकाब नहीं लगता है। प्रेरणा स्पष्ट रूप से "सही" एन्कोडिंग प्रकार का अनुमान लगाने वाले इंटरनेट एक्सप्लोरर के आसपास काम करने के लिए है, जिसे मैं बदले में यूटीएफ -7 एक्सएसएस हमलों से बचने के लिए करना चाहता हूं।सभी एएसपी.नेट एमवीसी HTTP प्रतिक्रियाओं को "वर्णसेट" जोड़ना
उत्तर
शायद यह आपके 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";
}
}
यह थोड़ा होशियार बनाने के लिए स्वतंत्र महसूस, लेकिन यह सामान्य विचार है। इसे अपने बेस कंट्रोलर क्लास में जोड़ें और आपका पूरा ऐप कवर किया गया है।
अगर मैं एकीकृत पाइपलाइन मोड में चल रहा था तो यह बहुत अच्छा काम करेगा, लेकिन मुझे विश्वास नहीं है कि मुझे आईआईएस 6 और इससे पहले हेडर के साथ मिलकर जाने की अनुमति है, क्या मैं हूं? –
आप निश्चित रूप से उन्हें जोड़ सकते हैं; हमने इसका परीक्षण किया है, और यह काम करता है। हालांकि, मैंने मौजूदा हेडर को संशोधित करने की कोशिश नहीं की है। इसे आजमा कर देखें; परीक्षण करना आसान है। –
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)
{
// ....
}
}
@ क्रेग-stuntz के विचार के आधार पर।
बेशक आपको यह सुनिश्चित करने की ज़रूरत है कि आप सही प्रतिक्रिया एन्कोडिंग दें यानी सामग्री के एन्कोडिंग को उस पर मेल खाना चाहिए, जो ResponseCharset विशेषता में निर्दिष्ट है।
यह मुझे बहुत मदद करता है जब मैं क्रोम के साथ कुछ एमवीसी कोड का परीक्षण कर रहा था, क्योंकि यह स्वीकृति हेडर में एन्कोडिंग निर्दिष्ट नहीं करता है।
- 1. HTTP प्रतिक्रियाओं के HTTP अनुरोधों को मैपिंग
- 2. एएसपी.नेट एमवीसी 3 पर कस्टम ValueProviderFactories जोड़ना?
- 3. फ़ायरफ़ॉक्स एक्सटेंशन में HTTP प्रतिक्रियाओं को बदलना
- 4. एएसपी.नेट एमवीसी - एक्शनलिंक्स में क्वेरीस्ट्रिंग "लंबाई =" जोड़ना?
- 5. एएसपी.नेट एमवीसी
- 6. एएसपी.नेट एमवीसी
- 7. एएसपी.नेट एमवीसी 3 https से http
- 8. एएसपी.नेट फ्रेमवर्क प्रतिक्रियाओं में 'एक्स-पावर्ड-बाय: एएसपी.नेट' HTTP शीर्षलेख क्यों जोड़ता है?
- 9. एएसपी.नेट एमवीसी
- 10. एएसपी.नेट एमवीसी 1.0
- 11. एएसपी.नेट एमवीसी को एएसपी.नेट वेबफॉर्म में मिलाकर
- 12. एएसपी.नेट एमवीसी: सभी नियंत्रक प्राप्त करें
- 13. एएसपी.नेट एमवीसी
- 14. एएसपी.नेट एमवीसी
- 15. एएसपी.नेट एमवीसी
- 16. एएसपी.नेट एमवीसी
- 17. एएसपी.नेट एमवीसी
- 18. एएसपी.नेट एमवीसी
- 19. एएसपी.नेट एमवीसी को शून्य
- 20. एएसपी.नेट एमवीसी
- 21. एएसपी.नेट एमवीसी
- 22. एएसपी.नेट एमवीसी वेबसाइट
- 23. एएसपी.नेट एमवीसी
- 24. एएसपी.नेट एमवीसी
- 25. एएसपी.नेट एमवीसी 4 सभी आने वाले अनुरोधों को रोकता है
- 26. एएसपी.नेट एमवीसी
- 27. एएसपी.नेट एमवीसी
- 28. एएसपी.नेट एमवीसी
- 29. एएसपी.नेट एमवीसी
- 30. एएसपी.नेट एमवीसी
+1; मुझे यह सुझाव मेरे सुझाव से बेहतर लगता है, हालांकि मुझे विश्वास है कि दोनों काम करेंगे। –
बस संदर्भ के लिए, दोनों अनुरोधों का डिफ़ॉल्ट एन्कोडिंग और प्रतिक्रिया एन्कोडिंग utf-8 है वैसे भी। [एमएसडीएन] देखें (http://msdn.microsoft.com/en-us/library/hy4kkhe0.aspx) – Appetere
[एमएसडीएन] के अपडेटेड लिंक (http://msdn.microsoft.com/en-gb/library/hy4kkhe0 (v = vs.100) .aspx) – Liam