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
- DoubleLink.cs
- InitializerFacet.cs
- DiagnosticTrace.cs
- OdbcConnectionString.cs
- Point3DKeyFrameCollection.cs
- PkcsUtils.cs
- SchemaSetCompiler.cs
- HttpFileCollection.cs
- BitmapEffect.cs
- Publisher.cs
- DictionaryEntry.cs
- WebPartZoneBaseDesigner.cs
- XmlWriterDelegator.cs
- SerializerDescriptor.cs
- PointConverter.cs
- HttpHeaderCollection.cs
- CompositeActivityTypeDescriptor.cs
- ProcessManager.cs
- NumberFunctions.cs
- ServiceObjectContainer.cs
- SerializerDescriptor.cs
- ParameterElement.cs
- Visual3D.cs
- ServerValidateEventArgs.cs
- ContentElement.cs
- Content.cs
- WebPartCatalogCloseVerb.cs
- AudioFormatConverter.cs
- ContentType.cs
- SelectedDatesCollection.cs
- Console.cs
- TextRangeEdit.cs
- Control.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- NotCondition.cs
- BlockUIContainer.cs
- ObjectDataSourceMethodEditor.cs
- PreloadedPackages.cs
- Stopwatch.cs
- SynchronizationContext.cs
- XmlSchemas.cs
- LockingPersistenceProvider.cs
- Site.cs
- LightweightCodeGenerator.cs
- NegatedCellConstant.cs
- MonthChangedEventArgs.cs
- InternalConfigSettingsFactory.cs
- Win32Exception.cs
- EventManager.cs
- DataFormat.cs
- InvalidateEvent.cs
- Transform3DGroup.cs
- AttributeAction.cs
- MorphHelper.cs
- SQLBytes.cs
- sqlstateclientmanager.cs
- TrustLevel.cs
- Assign.cs
- DocumentViewerBase.cs
- Bidi.cs
- ToolZone.cs
- ApplicationInterop.cs
- SystemFonts.cs
- CheckBox.cs
- InitializerFacet.cs
- Freezable.cs
- CheckBoxList.cs
- ComboBoxRenderer.cs
- CombinedGeometry.cs
- UserPersonalizationStateInfo.cs
- SystemColorTracker.cs
- PropertyDescriptor.cs
- RuleInfoComparer.cs
- StrongNameKeyPair.cs
- ConfigViewGenerator.cs
- RectAnimation.cs
- SID.cs
- ClientSettingsSection.cs
- Track.cs
- StructuredType.cs
- Int32.cs
- ZoneLinkButton.cs
- RepeaterItem.cs
- PropertyBuilder.cs
- infer.cs
- SqlException.cs
- SafeCryptoHandles.cs
- TreeNodeBinding.cs
- listitem.cs
- DbConnectionPoolIdentity.cs
- ContainerUtilities.cs
- CancellationScope.cs
- PageThemeCodeDomTreeGenerator.cs
- XmlSchemaSequence.cs
- GraphicsPathIterator.cs
- MatrixIndependentAnimationStorage.cs
- TypeValidationEventArgs.cs
- _AutoWebProxyScriptWrapper.cs
- SecurityContext.cs
- InputMethod.cs