Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / HttpResponseHeader.cs / 3 / HttpResponseHeader.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * Single http header representation * * Copyright (c) 1998 Microsoft Corporation */ namespace System.Web { using System.Collections; /* * Response header (either known or unknown) */ internal class HttpResponseHeader { private String _unknownHeader; private int _knownHeaderIndex; private String _value; private static readonly char [] s_BadChars = new char[] {'\n', '\r', '\0'}; internal HttpResponseHeader(int knownHeaderIndex, String value) { _unknownHeader = null; _knownHeaderIndex = knownHeaderIndex; // encode header value if if(HttpRuntime.EnableHeaderChecking) { _value = MaybeEncodeHeader(value); } else { _value = value; } } internal HttpResponseHeader(String unknownHeader, String value) { if(HttpRuntime.EnableHeaderChecking) { _unknownHeader = MaybeEncodeHeader(unknownHeader); _knownHeaderIndex = HttpWorkerRequest.GetKnownResponseHeaderIndex(_unknownHeader); _value = MaybeEncodeHeader(value); } else { _unknownHeader = unknownHeader; _knownHeaderIndex = HttpWorkerRequest.GetKnownResponseHeaderIndex(_unknownHeader); _value = value; } } internal virtual String Name { get { if (_unknownHeader != null) return _unknownHeader; else return HttpWorkerRequest.GetKnownResponseHeaderName(_knownHeaderIndex); } } internal String Value { get { return _value;} } internal void Send(HttpWorkerRequest wr) { if (_knownHeaderIndex >= 0) wr.SendKnownResponseHeader(_knownHeaderIndex, _value); else wr.SendUnknownResponseHeader(_unknownHeader, _value); } // Encode the header if it contains a CRLF pair // VSWhidbey 257154 internal static string MaybeEncodeHeader(string value) { string sanitizedHeader = value; if (value.IndexOfAny(s_BadChars) >= 0) { // if we found a CRLF pair or NULL in the header, replace it // this is slow but isn't expected to occur often // review: will any clients try to decode this? // should it just be a space? sanitizedHeader = value.Replace("\n", "%0a"); sanitizedHeader = sanitizedHeader.Replace("\r", "%0d"); sanitizedHeader = sanitizedHeader.Replace("\0", "%00"); } return sanitizedHeader; } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- StringValueSerializer.cs
- AdapterDictionary.cs
- CompositeClientFormatter.cs
- Paragraph.cs
- CodeCatchClause.cs
- DynamicPropertyHolder.cs
- TypeValidationEventArgs.cs
- ProviderSettings.cs
- SqlConnectionPoolProviderInfo.cs
- ModelUIElement3D.cs
- WebAdminConfigurationHelper.cs
- ToolStripPanelRenderEventArgs.cs
- DefaultPropertyAttribute.cs
- GenericsInstances.cs
- IgnoreSection.cs
- Compiler.cs
- MultipleViewPattern.cs
- SQLMoney.cs
- StyleSelector.cs
- Token.cs
- EventlogProvider.cs
- BackgroundWorker.cs
- HtmlMeta.cs
- GridViewSelectEventArgs.cs
- Substitution.cs
- XsdDuration.cs
- ToolboxBitmapAttribute.cs
- UpdateCompiler.cs
- SerializableAttribute.cs
- MatrixConverter.cs
- ScriptDescriptor.cs
- UpdatableGenericsFeature.cs
- TemplateKeyConverter.cs
- DefaultWorkflowLoaderService.cs
- TypographyProperties.cs
- WindowsComboBox.cs
- SqlServices.cs
- StringReader.cs
- TypeConverters.cs
- TransformerInfoCollection.cs
- GcSettings.cs
- DifferencingCollection.cs
- RTLAwareMessageBox.cs
- ActivityBindForm.cs
- EntityProviderServices.cs
- WebPartCatalogAddVerb.cs
- WasEndpointConfigContainer.cs
- XmlReflectionMember.cs
- WhitespaceRuleReader.cs
- OperationCanceledException.cs
- SoapObjectInfo.cs
- InputBinding.cs
- Error.cs
- OleDbParameterCollection.cs
- EncoderFallback.cs
- IRCollection.cs
- AuthenticationModuleElement.cs
- EditorZoneBase.cs
- XmlBinaryReader.cs
- ScalarType.cs
- IPipelineRuntime.cs
- DataGridViewLayoutData.cs
- OverrideMode.cs
- TransactionManager.cs
- RenderTargetBitmap.cs
- WindowsFont.cs
- ResourceManager.cs
- InputProcessorProfilesLoader.cs
- AsymmetricCryptoHandle.cs
- KeyValueSerializer.cs
- KeyEvent.cs
- SHA1CryptoServiceProvider.cs
- DictionaryTraceRecord.cs
- TypeConverterMarkupExtension.cs
- IPGlobalProperties.cs
- ScrollChrome.cs
- ITextView.cs
- ExpressionEvaluator.cs
- RayMeshGeometry3DHitTestResult.cs
- ParallelTimeline.cs
- UdpTransportSettingsElement.cs
- ZoneLinkButton.cs
- SeekStoryboard.cs
- DataServiceQueryException.cs
- IgnoreFlushAndCloseStream.cs
- WebUtility.cs
- CompareInfo.cs
- IERequestCache.cs
- ObjectListCommandCollection.cs
- _HeaderInfo.cs
- EventsTab.cs
- NullableLongSumAggregationOperator.cs
- TableDetailsRow.cs
- ToolStripItemImageRenderEventArgs.cs
- ExpanderAutomationPeer.cs
- SchemaElementLookUpTableEnumerator.cs
- JsonEncodingStreamWrapper.cs
- IndentedWriter.cs
- SecurityContext.cs
- PathParser.cs