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
- AssociationType.cs
- NonDualMessageSecurityOverHttpElement.cs
- BaseParser.cs
- QueueProcessor.cs
- Column.cs
- basenumberconverter.cs
- ObjectPersistData.cs
- ProviderCollection.cs
- StrongNameUtility.cs
- CodeNamespaceImportCollection.cs
- ShadowGlyph.cs
- PocoEntityKeyStrategy.cs
- OletxTransactionHeader.cs
- PermissionSetEnumerator.cs
- MouseDevice.cs
- SerializationException.cs
- SmiContextFactory.cs
- DataRecordInfo.cs
- LayeredChannelFactory.cs
- DocumentPageView.cs
- CompilerParameters.cs
- DBBindings.cs
- BindingElementCollection.cs
- OdbcEnvironment.cs
- BaseParaClient.cs
- ParameterElementCollection.cs
- Stack.cs
- XPathSelectionIterator.cs
- BitmapMetadata.cs
- SpecialNameAttribute.cs
- DataRowView.cs
- AtomMaterializer.cs
- BitmapEffectGroup.cs
- AtomEntry.cs
- XmlDataLoader.cs
- DataColumnChangeEvent.cs
- CollectionConverter.cs
- ObjectListShowCommandsEventArgs.cs
- ProvidePropertyAttribute.cs
- VisualBrush.cs
- NegationPusher.cs
- RecognizerStateChangedEventArgs.cs
- ToolStripMenuItem.cs
- X509CertificateInitiatorClientCredential.cs
- StringPropertyBuilder.cs
- SettingsBindableAttribute.cs
- GridViewRowEventArgs.cs
- CellTreeSimplifier.cs
- CompModSwitches.cs
- AccessDataSource.cs
- ButtonAutomationPeer.cs
- GridViewUpdateEventArgs.cs
- Clipboard.cs
- SR.Designer.cs
- XmlCharCheckingReader.cs
- Stylesheet.cs
- SelfIssuedAuthRSAPKCS1SignatureFormatter.cs
- DesignerSelectionListAdapter.cs
- TableLayoutPanelCellPosition.cs
- Base64WriteStateInfo.cs
- WindowsTitleBar.cs
- SettingsSavedEventArgs.cs
- filewebrequest.cs
- SamlConditions.cs
- Matrix3DConverter.cs
- HandledEventArgs.cs
- Inline.cs
- SiteMapNodeItemEventArgs.cs
- ServiceDescriptionReflector.cs
- JapaneseCalendar.cs
- XamlDesignerSerializationManager.cs
- RelatedCurrencyManager.cs
- Invariant.cs
- Clock.cs
- PropertyMap.cs
- MetaTable.cs
- TemplateBuilder.cs
- SiblingIterators.cs
- Buffer.cs
- SqlInternalConnectionSmi.cs
- XmlElementList.cs
- securestring.cs
- ClassHandlersStore.cs
- BreakRecordTable.cs
- RuntimeCompatibilityAttribute.cs
- TextRunTypographyProperties.cs
- DictionaryEntry.cs
- SqlFileStream.cs
- TreeBuilderBamlTranslator.cs
- AppSettingsReader.cs
- updateconfighost.cs
- _UriSyntax.cs
- Operand.cs
- HitTestParameters.cs
- EpmContentSerializerBase.cs
- RuleSettings.cs
- DataGridCommandEventArgs.cs
- SqlUDTStorage.cs
- EncryptedPackageFilter.cs
- TypographyProperties.cs