HTTP प्रतिसाद शीर्ष लेख में सामग्री-निपटान का उपयोग


127

डेटाबेस से फाइल परोसते समय मुझे निम्नलिखित asp.net कोड बहुत उपयोगी लगते हैं:

Response.AppendHeader("content-disposition", "attachment; filename=" + fileName);

इससे उपयोगकर्ता फ़ाइल को अपने कंप्यूटर पर सहेज सकता है और फिर यह तय कर सकता है कि फ़ाइल का उपयोग करने की कोशिश करने वाले ब्राउज़र के बजाय इसका उपयोग कैसे किया जाए।

सामग्री-वितरण प्रतिक्रिया हेडर के साथ और क्या किया जा सकता है?


23
ध्यान दें कि यदि फ़ाइलनाम में व्हॉट्सएप या गैर-एएससीआईआई अक्षर हैं तो आपका नमूना कोड टूट जाएगा। अधिक जानकारी के लिए RFC 6266 देखें।
जूलियन रेसके

@JulianReschke, ASCII वर्णों के बारे में क्या है जो गैर-मुद्रण योग्य माना जाता है? ( 0से 0x1F)
पेसियर

RFC 6266 पढ़ें (इस तथ्य के अलावा कि वे एक फ़ाइल नाम में उपयोग करने के लिए एक बुरा विचार होगा; प्राप्तकर्ता उन्हें वैसे भी फेंकने की संभावना रखते हैं)
जूलियन रेसके

1
यदि आप नाम के आस-पास दोहरे उद्धरण चिह्नों का उपयोग करते हैं, तो आप सफेद स्थान, यूनिकोड आदि का उपयोग कर सकते हैं। kb.mozillazine.org/…
टोनी बेनब्राहिम

1
@ रॉनी ओवरबीज सामग्री विवाद क्या है?
divy3993

जवाबों:


84

ध्यान दें कि RFC 6266 नीचे संदर्भित RFCs को अधिगृहीत करता है। धारा 7 संबंधित सुरक्षा चिंताओं में से कुछ को रेखांकित करती है।

सामग्री- वितरण शीर्षक पर अधिकार RFC 1806 और RFC 2183 है। लोगों ने सामग्री- वितरण हैकिंग को भी तैयार किया है। यह ध्यान रखना महत्वपूर्ण है कि सामग्री-वितरण हेडर HTTP 1.1 मानक का हिस्सा नहीं है।

HTTP 1.1 मानक ( RFC 2616 ) में सामग्री वितरण के संभावित सुरक्षा दुष्प्रभावों का भी उल्लेख किया गया है:

15.5 सामग्री-विवाद मुद्दे

RFC 1806 [35], जिसमें से अक्सर
HTTP में कंटेंट- डिस्पोजल (सेक्शन 19.5.1 देखें) हेडर प्राप्त होता है, कई
गंभीर सुरक्षा विचार हैं। सामग्री-विवाद
HTTP मानक का हिस्सा नहीं है , लेकिन चूंकि इसे व्यापक रूप से लागू किया गया है, इसलिए हम
कार्यान्वयनकर्ताओं के लिए इसके उपयोग और जोखिमों का दस्तावेजीकरण कर रहे हैं । विवरण के लिए RFC 2183 [49]
(जो RFC 1806 को अपडेट करता है) देखें।


31
आजकल, प्राधिकरण RFC 6266 है।
जूलियन

@JulianReschke, "सुपीरियर" और "अपडेट" कैसे काम करता है? क्या RFC 7230 जैसे नए संस्करण भी RFC 6266 को अप्रचलित मानते हैं?
पचेरियर

@ स्पेसर - RFC 7230 RFC 6266 को प्रभावित क्यों करेगा?
जूलियन रेसके ने

@ जूलियन, 1) चूंकि 6266 अपडेट 2616, 2) 2616 को 723X द्वारा अप्रचलित कर दिया गया है, 3) फिर, क्या 6266 को भी माना जाता है?
पचेरियर

5
खैर, RFC 5678 यहाँ, RFC 9876 वहाँ। यदि कंटेंट-डिस्पोजल पर रोक लगा दी जाती है, तो हमें इसके बजाय क्या उपयोग करना चाहिए?
सेबा ताथ

25

खैर, ऐसा लगता है कि कंटेंट-डिस्पोजल हेडर मूल रूप से ई-मेल के लिए बनाया गया था, न कि वेब के लिए। ( प्रासंगिक RFC से लिंक करें ।)

मैं अनुमान लगा रहा हूं कि वेब ब्राउज़र इसका जवाब दे सकते हैं

Response.AppendHeader("content-disposition", "inline; filename=" + fileName);

जब बचत हो रही है, लेकिन मुझे यकीन नहीं है।



5

Asp.net उपयोगकर्ताओं के लिए, .NET ढाँचा सामग्री विवाद शीर्षक बनाने के लिए एक वर्ग प्रदान करता है: System.Net.Mime.ContentDisposition

मूल उपयोग:

var cd = new System.Net.Mime.ContentDisposition();
cd.FileName = "myFile.txt";
cd.ModificationDate = DateTime.UtcNow;
cd.Size = 100;
Response.AppendHeader("content-disposition", cd.ToString());

1
खबरदार, यह वर्ग RFC 6266 के अनुरूप नहीं है । यह RFC 5987 एन्कोडिंग के साथ पैरामीटर filenameका उपयोग करने के बजाय पैरामीटर में UTF-8 बेस 64 एनकोडिंग करता है । ठीक करने के लिए एफएक्स बर्तनों को प्राप्त करने या उनका उपयोग करने का कोई तरीका नहीं है, लगभग सब कुछ गैर-अति-उपयोग योग्य या आंतरिक है ... .नेट एफएक्स में अभी भी खुलापन और व्यापकता सीखने का एक लंबा रास्ता है। एमवीसी 5.2 में, क्लास थोड़ा बेहतर करती है , लेकिन दूसरों के मापदंडों को नहीं संभालती है और इसका अधिकांश कार्यान्वयन आंतरिक भी है ...filename*FileResultfilenameinline
Frédéric

2

यह शीर्ष लेख RFC 2183 में परिभाषित किया गया है , इसलिए यह पढ़ना शुरू करने के लिए सबसे अच्छी जगह होगी।

अनुमत मान वे हैं जो इंटरनेट असाइन किए गए नंबर प्राधिकरण (IANA) के साथ पंजीकृत हैं; उनके मूल्यों की रजिस्ट्री को निश्चित स्रोत के रूप में देखा जाना चाहिए।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.