Code:
/ FX-1434 / FX-1434 / 1.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
- IDReferencePropertyAttribute.cs
- ReadingWritingEntityEventArgs.cs
- WebHttpBindingCollectionElement.cs
- ScrollEventArgs.cs
- Rotation3D.cs
- LocalizedNameDescriptionPair.cs
- GetPageCompletedEventArgs.cs
- Metafile.cs
- XmlNamespaceManager.cs
- UInt64.cs
- TriggerActionCollection.cs
- InProcStateClientManager.cs
- XmlWriterSettings.cs
- IResourceProvider.cs
- QuaternionConverter.cs
- TransformConverter.cs
- DataGridCellAutomationPeer.cs
- PathGeometry.cs
- Pair.cs
- StubHelpers.cs
- FrameworkContentElement.cs
- _BaseOverlappedAsyncResult.cs
- IIS7UserPrincipal.cs
- SmtpLoginAuthenticationModule.cs
- SchemaUtility.cs
- HtmlButton.cs
- NonSerializedAttribute.cs
- CircleHotSpot.cs
- ContextBase.cs
- DbXmlEnabledProviderManifest.cs
- XsdCachingReader.cs
- NetDataContractSerializer.cs
- TableDetailsCollection.cs
- ActivityCollectionMarkupSerializer.cs
- HtmlFormParameterReader.cs
- UserControlCodeDomTreeGenerator.cs
- LabelLiteral.cs
- HttpPostProtocolImporter.cs
- SignatureDescription.cs
- DynamicPhysicalDiscoSearcher.cs
- TemplateField.cs
- XmlBinaryReaderSession.cs
- AppDomainProtocolHandler.cs
- X500Name.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- EditableTreeList.cs
- ProgressBarHighlightConverter.cs
- HotCommands.cs
- HtmlInputFile.cs
- StructuredTypeInfo.cs
- IconBitmapDecoder.cs
- JournalEntryListConverter.cs
- NullEntityWrapper.cs
- XmlMembersMapping.cs
- _SSPISessionCache.cs
- ProfileProvider.cs
- SystemIPv6InterfaceProperties.cs
- CompletedAsyncResult.cs
- SecureStringHasher.cs
- DecoratedNameAttribute.cs
- HtmlControlAdapter.cs
- TableLayoutRowStyleCollection.cs
- RecordManager.cs
- OutputCacheModule.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- ToggleButtonAutomationPeer.cs
- DiffuseMaterial.cs
- TableLayoutStyle.cs
- StateBag.cs
- MultiDataTrigger.cs
- AppearanceEditorPart.cs
- SqlDuplicator.cs
- XhtmlTextWriter.cs
- NetTcpSecurity.cs
- ProcessThreadDesigner.cs
- CssStyleCollection.cs
- PatternMatchRules.cs
- WebPartZoneCollection.cs
- GeometryValueSerializer.cs
- SqlTypeSystemProvider.cs
- DefaultTextStoreTextComposition.cs
- DBProviderConfigurationHandler.cs
- EntityParameterCollection.cs
- EntityConnectionStringBuilderItem.cs
- MappingItemCollection.cs
- ListItemCollection.cs
- SchemaImporterExtensionElement.cs
- DesignerActionVerbItem.cs
- ConfigurationErrorsException.cs
- COM2ExtendedUITypeEditor.cs
- FactoryGenerator.cs
- DataGridViewLinkCell.cs
- ConvertersCollection.cs
- AliasGenerator.cs
- ChannelAcceptor.cs
- Misc.cs
- oledbmetadatacollectionnames.cs
- TimeSpanStorage.cs
- latinshape.cs
- ListViewInsertEventArgs.cs