<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx</link><description>Developers frequently confuse Request Headers, Response Headers, and Server Variables as well as the appropriate syntax to retrieve/manipulate each of them, depending on the API (ISAPI, ASP, and ASP.Net). I am going to clarify all of this right now. :-)</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#579863</link><pubDate>Thu, 20 Apr 2006 16:58:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:579863</guid><dc:creator>Jeff Parker</dc:creator><description>Well I don't know what to say. Here I thought I knew a heck of a lot about the response, request and server variables. I mean I have been doing web dev for about 13 years now. I have read the specs, never noticed the flaw, I just kind of accepted the specs as they have been around for years. &lt;br&gt;&lt;br&gt;I love it and hate it when do this to us. Love it cause I really learn something new and it makes me think. Hate it because now I will be spending the rest of the day churning over code in my head I have written for several years and processing this info and writing my own samples to play with my new found knowledge.&lt;br&gt;&lt;br&gt;However good post. I learned a heck of a lot now I just need to digest it all.</description></item><item><title>Interesting Finds</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#580503</link><pubDate>Fri, 21 Apr 2006 13:28:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:580503</guid><dc:creator>Jason Haley</dc:creator><description /></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#580542</link><pubDate>Fri, 21 Apr 2006 14:42:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:580542</guid><dc:creator>Phylyp</dc:creator><description>&amp;lt;trivia&amp;gt;&lt;br&gt;The HTTP_SM_USER header is used by Netegrity SiteMinder, for holding a single sign-on user ID. &lt;br&gt;&amp;lt;/trivia&amp;gt;&lt;br&gt;&lt;br&gt;In a previous project, we ran into problems where the - to _ replacement was causing a bit of a pain, in our ASP code that needed to parse the user's SSO. &lt;br&gt;&lt;br&gt;However, our ever-friendly SiteMinder team changed the header to HTTP_SMUSER, thus alleviating our woes. </description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#580569</link><pubDate>Fri, 21 Apr 2006 15:38:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:580569</guid><dc:creator>David.Wang</dc:creator><description>Jeff - hehe. My job is done, then. ;-)&lt;br&gt;&lt;br&gt;I actually started writing more code snippets in ISAPI, ASP, and ASP.Net before I decided to tone it down and just focus on the basics. I'll leave those details to another time.&lt;br&gt;&lt;br&gt;//David</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#580570</link><pubDate>Fri, 21 Apr 2006 15:41:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:580570</guid><dc:creator>David.Wang</dc:creator><description>Phylyp - well... now you know why all this is going on and how to account for it in various web framework technologies that run on IIS. :-)&lt;br&gt;&lt;br&gt;I know you all think we are crazy sometimes, but we are not that random. ;-)&lt;br&gt;&lt;br&gt;//David</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#581045</link><pubDate>Sat, 22 Apr 2006 01:49:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:581045</guid><dc:creator>Maurits</dc:creator><description>... I don't see the ambiguity.&lt;br&gt;&lt;br&gt;OK, Some-Header: and Some_Header: both map to the same environment variable. &amp;nbsp;Fine. &amp;nbsp;That just means the header-to-environment mapping isn't one-to-one. &amp;nbsp;We knew that anyway... environment variables aren't case-sensitive, for example.&lt;br&gt;&lt;br&gt;So as far as CGI is concerned, the following are all the same:&lt;br&gt;&lt;br&gt;Some-Header: a&lt;br&gt;Some_Header: a&lt;br&gt;sOmE-HeAdEr: a&lt;br&gt;&lt;br&gt;Isn't this only a problem when you have two headers, both important to your app, that differ only in case or &amp;quot;- vs. _&amp;quot;?</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#581096</link><pubDate>Sat, 22 Apr 2006 04:06:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:581096</guid><dc:creator>David.Wang</dc:creator><description>Maurits - The classic problem here is when you are an ISAPI, like ASP or ASP.Net, and want to retrieve a Request Header with &amp;quot;_&amp;quot; (underscore) using Server Variable... because you cannot.&lt;br&gt;&lt;br&gt;For example, SM_USER used by SiteMinder. You will have to parse the ALL_RAW Server Variable to get it in ASP. On IIS6, you can finally use ServerVariable( &amp;quot;HEADER_SM_USER&amp;quot; ) and get it declaratively, without parsing.&lt;br&gt;&lt;br&gt;//David</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#581578</link><pubDate>Sun, 23 Apr 2006 13:48:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:581578</guid><dc:creator>Maurits</dc:creator><description>This much is clear:&lt;br&gt;&lt;br&gt;* On IIS, HTTP_SM_USER does not catch the value of SM_User:&lt;br&gt;&lt;br&gt;You imply that * is a weakness in the CGI spec. In particular, you claim that there is no CGI means to access the value of SM_User: via server/environment variables.&lt;br&gt;&lt;br&gt;I disagree. &amp;nbsp;I think there is a CGI means, and HTTP_SM_USER is precisely it.&lt;br&gt;&lt;br&gt;Therefore I consider * a bug in IIS.&lt;br&gt;See this post:&lt;br&gt;&lt;a rel="nofollow" target="_new" href="http://channel9.msdn.com/ShowPost.aspx?PostID=184522"&gt;http://channel9.msdn.com/ShowPost.aspx?PostID=184522&lt;/a&gt;&lt;br&gt;And this repro/analysis:&lt;br&gt;&lt;a rel="nofollow" target="_new" href="http://www.geocities.com/mvaneerde/sm_user.txt"&gt;http://www.geocities.com/mvaneerde/sm_user.txt&lt;/a&gt;&lt;br&gt;&lt;br&gt;Note at the end of the analysis that there is at least one third-party CGI ISAPI that correctly pulls SM_User: from HTTP_SM_USER.</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#581599</link><pubDate>Sun, 23 Apr 2006 14:54:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:581599</guid><dc:creator>Maurits</dc:creator><description>It seems this is a known issue:&lt;br&gt;&lt;a rel="nofollow" target="_new" href="http://support.microsoft.com/default.aspx?kbid=294217"&gt;http://support.microsoft.com/default.aspx?kbid=294217&lt;/a&gt;</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#582054</link><pubDate>Mon, 24 Apr 2006 13:15:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:582054</guid><dc:creator>David.Wang</dc:creator><description>Maurits - Sorry, but you still have not provided any proof that this is an issue with IIS. &lt;BR&gt;&lt;BR&gt;You should know by now that just because it is a KB does not mean it is a bug in a Microsoft product... the Microsoft KB system is quite broken, in my opinion - if you only knew how it really works... you'd be surprised that useful information comes from it at all. It's part of the reason that I blog - because I want the KB to go away. &lt;BR&gt;&lt;BR&gt;All it means is that someone called in due to some confusion, wanted to do something but couldn't, and someone in PSS wrote a KB article explaining it. The person writing the KB article usually NEVER consults the product team on whether it is right or wrong - they usually just assume the product is wrong and move on. They are paid to create that KB, not whether it is correct. This is why for most interesting keywords, you see DOZENS of KB articles that run the entire gamut of clarity, conciseness, or correctness. &lt;BR&gt;&lt;BR&gt;Yes, a major case of left hand not knowing what the right hand is doing. &lt;BR&gt;&lt;BR&gt;Anyhow, back to the discussion at hand. I can vent about the MS KB system at another time when they really piss me off. :-) &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;The argument is very clear in my mind: show me: &lt;BR&gt;1. a CGI 1.1 EXE (not ISAPI) that can &lt;BR&gt;2. correctly and individually retrieve header values for BOTH SM_USER and SM-USER headers &lt;BR&gt;3. from the same request &lt;BR&gt;4. using JUST the HTTP_ prefix syntax &lt;BR&gt;&lt;BR&gt;and I will file a bug for IIS7 to get it fixed. &lt;BR&gt;&lt;BR&gt;ISAPI can work around the HTTP_ specification flaw by parsing ALL_RAW or ALL_HTTP server variables for headers. That is not interesting to me - the specification flaw is what we are discussing. &lt;BR&gt;&lt;BR&gt;Bottom line: the CGI specification is flawed as soon as it gave a mapping that is not bijective. Period. End of discussion. &lt;BR&gt;&lt;BR&gt;BTW: None of the "solutions" offered at geocities.com will work for a request with both SM_USER and SM-USER request headers. They work if EITHER SM_USER or SM-USER are given. And since we are nitpicking over specifications, it is the mere&amp;nbsp;possibility, not practicality (I can't see applications intentionally using SM_USER and SM-USER as different things) that matters. Meaning if one gives code snippets, it most likely missed the boat.&lt;BR&gt;&lt;BR&gt;//David</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#582285</link><pubDate>Mon, 24 Apr 2006 20:00:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:582285</guid><dc:creator>Maurits</dc:creator><description>&amp;gt; show me:&lt;br&gt;&amp;gt; 1. a CGI 1.1 EXE (not ISAPI) that can&lt;br&gt;&amp;gt; 2. correctly and individually retrieve header values for BOTH SM_USER and SM-USER headers&lt;br&gt;&amp;gt; 3. from the same request&lt;br&gt;&amp;gt; 4. using JUST the HTTP_ prefix syntax&lt;br&gt;&lt;br&gt;You have very clearly illustrated the non-one-to-one-ness of the CGI mapping.&lt;br&gt;&lt;br&gt;This is NOT the bug:&lt;br&gt;&lt;br&gt;-- REQUEST --&lt;br&gt;SM_User: foo&lt;br&gt;SM-User: bar&lt;br&gt;&lt;br&gt;-- CGI ENVIRONMENT --&lt;br&gt;HTTP_SM_USER: ? // cannot be both foo and bar -- THIS IS NOT A BUG IN IIS but a FUNDAMENTAL result of the CGI mapping&lt;br&gt;&lt;br&gt;IIS is free to do what it likes here. &amp;nbsp;CGI does not specify what to do if two headers are redundant.&lt;br&gt;&lt;br&gt;This, on the other hand, IS the bug:&lt;br&gt;&lt;br&gt;-- REQUEST --&lt;br&gt;SM_User: foo&lt;br&gt;&lt;br&gt;-- CGI ENVIRONMENT --&lt;br&gt;HTTP_SM_USER: foo // well, the expected result is &amp;quot;foo&amp;quot;; IIS gives &amp;quot;&amp;quot;. THIS IS A BUG IN IIS.&lt;br&gt;&lt;br&gt;Other CGI implementations do not have this bug, and CAN sniff the SM_User header through HTTP_SM_USER -- provided that it is not masked by a SM-User header.&lt;br&gt;&lt;br&gt;The bug, in particular, lies in ISAPI's GetServerVariable(...)&lt;br&gt;&lt;br&gt;This blog doesn't allow indentation, so I've posted pseudocode here:&lt;br&gt;&lt;a rel="nofollow" target="_new" href="http://www.geocities.com/mvaneerde/sm_user2.txt"&gt;http://www.geocities.com/mvaneerde/sm_user2.txt&lt;/a&gt;&lt;br&gt;&lt;br&gt;</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#582335</link><pubDate>Mon, 24 Apr 2006 21:34:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:582335</guid><dc:creator>Maurits</dc:creator><description>There's a bug in the KB article, too. &amp;nbsp;It says &amp;quot;Retrieve and parse the HTTP_ALL header variable&amp;quot; instead of &amp;quot;Retrieve and parse the ALL_HTTP header variable&amp;quot; -- I'll report that through the appropriate method.</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#582919</link><pubDate>Tue, 25 Apr 2006 13:21:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:582919</guid><dc:creator>David.Wang</dc:creator><description>Maurits - I think we are merely arguing whether the glass is half empty or half full. &lt;BR&gt;&lt;BR&gt;One can argue that the CGI specification says that HTTP_SM_USER should retrieve SM_USER or SM-USER, whichever one exists, and if both exist, the behavior is unspecified. &lt;BR&gt;&lt;BR&gt;Or HTTP_SM_USER only retrieves SM-User, there is no way to retrieve SM_USER, and there is no unspecified behavior. &lt;BR&gt;&lt;BR&gt;Yes, the specification did not say "you cannot retrieve headers containing '_'", so you may be inclined to say that IIS interpretation is too narrow. However, it also did not say "you cannot retrieve headers containing CTRL characters", either... so it is a matter of whether one wants unspecified or underspecified behavior. &lt;BR&gt;&lt;BR&gt;Neither option is more "correct" than other, so until the CGI specification clarifies the confusion, there is no way for one to say "this is a bug in X".&amp;nbsp;This is the problem with an underspecified specification - things get too open for interpretation. ;-)&lt;BR&gt;&lt;BR&gt;//David</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#583464</link><pubDate>Tue, 25 Apr 2006 22:40:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:583464</guid><dc:creator>Maurits</dc:creator><description>FWIW, here's the CGI/1.1 RFC:&lt;br&gt;&lt;a rel="nofollow" target="_new" href="http://www.ietf.org/rfc/rfc3875.txt"&gt;http://www.ietf.org/rfc/rfc3875.txt&lt;/a&gt;&lt;br&gt;...&lt;br&gt;4.1.18. &amp;nbsp;Protocol-Specific Meta-Variables&lt;br&gt;...&lt;br&gt;The HTTP header field name is converted to upper case, has all occurrences of &amp;quot;-&amp;quot; replaced with &amp;quot;_&amp;quot; and has &amp;quot;HTTP_&amp;quot; prepended to give the meta-variable name</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#583980</link><pubDate>Wed, 26 Apr 2006 12:53:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:583980</guid><dc:creator>David.Wang</dc:creator><description>Maurits - Good information...&lt;br&gt;&lt;br&gt;But, this is not a specification... it's more like an &amp;quot;oh, we did it this way; we think it should be codified&amp;quot;.&lt;br&gt;&lt;br&gt;And it still does not deal with what happens with retrieving header values for requests containing both SM_USER and SM-USER headers. tsk tsk.&lt;br&gt;&lt;br&gt;And it is dated after all versions of IIS under discussion, so kinda moot point except for maybe IIS7, but it's not an endorsed specification, so it is hard to rally behind it&lt;br&gt;&lt;br&gt;//David</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#584271</link><pubDate>Wed, 26 Apr 2006 18:40:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:584271</guid><dc:creator>Maurits</dc:creator><description>... and both of the authors work for Apache ;)</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#584288</link><pubDate>Wed, 26 Apr 2006 18:58:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:584288</guid><dc:creator>Maurits</dc:creator><description>There's also this Internet-Draft from 1999, by IBM and E*Trade...&lt;br&gt;&lt;a rel="nofollow" target="_new" href="http://cgi-spec.golux.com/draft-coar-cgi-v11-03-clean.html#6.1.5"&gt;http://cgi-spec.golux.com/draft-coar-cgi-v11-03-clean.html#6.1.5&lt;/a&gt;&lt;br&gt;Each HTTP header field name is converted to upper case, has all occurrences of &amp;quot;-&amp;quot; replaced with &amp;quot;_&amp;quot;, and has &amp;quot;HTTP_&amp;quot; prepended to form the metavariable name.&lt;br&gt;...&lt;br&gt;If multiple header fields with the same field-name are received then the server MUST rewrite them as though they had been received as a single header field having the same semantics before being represented in a metavariable.&lt;br&gt;&amp;lt;/quote&amp;gt;&lt;br&gt;&lt;br&gt;That last sentence is wonderfully vague :)&lt;br&gt;&lt;br&gt;This draft hasn't had a great deal of work done on it recently, though :(</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#584437</link><pubDate>Wed, 26 Apr 2006 22:29:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:584437</guid><dc:creator>David.Wang</dc:creator><description>Maurits - hehe... yeah. It's like patting yourself on the back and writing the spec *after* the implementation. ;-)&lt;br&gt;&lt;br&gt;The vague sentence is dealing with what happens when the browser sends multiple SM_USER headers on the same request (i.e. HTTP spec says to merge their values into one value, comma-delimited)... which is also wonderful information to have in a specification... but sigh, it still ignores the SM_USER and SM-USER ambiguity.&lt;br&gt;&lt;br&gt;I wonder if people just copy/paste the original sentences of the spec and then just augment/embelish the parts they are interested in...&lt;br&gt;&lt;br&gt;//David</description></item><item><title>HOWTO: Run Console Applications from IIS6 on Windows Server 2003, Part 2</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#586314</link><pubDate>Fri, 28 Apr 2006 23:18:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:586314</guid><dc:creator>David Wang</dc:creator><description>I finally have enough blog entries about various portions of IIS6 request processing that I can stitch...</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#592410</link><pubDate>Mon, 08 May 2006 18:02:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:592410</guid><dc:creator>gaetano giunta</dc:creator><description>Sorry, but I think that the spec being vague and broken is a very poor excuse in this case.&lt;br&gt;&lt;br&gt;As has been stated before, the spec misses the case of two different http headers that will result in the same converted value.&lt;br&gt;&lt;br&gt;It has no ambiguity whatsoever oh the handling of 'SM_USER': zero, nil, zilch. Anybody doing his best for implementing it, should treat it as valid. And even if the spec had been twice as shady and broken, the main goal for everybody is interoperability, isn't it?&lt;br&gt;</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#596036</link><pubDate>Fri, 12 May 2006 14:36:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:596036</guid><dc:creator>David.Wang</dc:creator><description>gaetano - Good point, but I hope you agree that vague/broken spec is the very bane against interoperability.&lt;br&gt;&lt;br&gt;As a general rule, when you have communication between two parties, miscommunication and misinterpretations are bound to happen, and having vague/broken specifications (which basically set the foundation of common understanding) does NOT help.&lt;br&gt;&lt;br&gt;We can argue about relative correctness of miscommunication all day long, but at the end of the day, I think it is the root vagueness that matters and NOT the various instance-manifestations of that vagueness. If you solve the root problem (mapping of headers to server variables), the instance-problems naturally solve themselves. Those are sound design principles.&lt;br&gt;&lt;br&gt;Now, I caution you against mistaking miscommunication for &amp;quot;not doing his/her best for implementing it&amp;quot;. Who says that we are not doing our best?&lt;br&gt;&lt;br&gt;I mean, you should agree that EVEN IF everyone is doing their best-effort for supporting interoperability, any vagueness in the specification that causes miscommunication destroys interoperability... and you somehow want to imply that someone did NOT do their best effort? Give me a break. That logic is down-right arrogant and insulting.&lt;br&gt;&lt;br&gt;My statement is that mistakes/ambiguity in specifications happen more than you think, and they introduce mis-communication which can affect interoperability while implying NOTHING about the effort put forth by the implementors.&lt;br&gt;&lt;br&gt;//David</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#604152</link><pubDate>Tue, 23 May 2006 00:39:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:604152</guid><dc:creator>Jim Thorstad</dc:creator><description>David, I've found your efforts to explain the situation to be very useful. Our company has struggled to support customers doing single sign-on between our product and Netegrity SiteMinder because of the fact that the header containing the SiteMinder Id (by default, without customizations) is either sm_user, or sm-user and we see them (I think correctly) as different. &lt;br&gt;&lt;br&gt;Thus our customers get frustrated and I had to put a debug page into our product just to show our customers that its not *our* fault they spelled the header wrong.&lt;br&gt;&lt;br&gt;I've also done some research to educate myself why Tomcat shows headers in one case on WebSphere on Unix shows them in another case (only to later find in the spec that case is not relevant). Your thread here was helpful &amp;nbsp;as you explain why the ASP sample code I downloaded that uses HTTP_ might be contributing to our confusion.&lt;br&gt;&lt;br&gt;</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#691003</link><pubDate>Mon, 07 Aug 2006 18:22:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:691003</guid><dc:creator>Arun Chaudhary</dc:creator><description>Hi,&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;I am very new in ISAPI but i have my very urgent requiremnet that i have to set a cutsom varibale and then again need to fetch it on next page or any other page like&lt;br&gt;&lt;br&gt;suppose first i wll create a custom server valriable like &amp;quot;username&amp;quot; and on in other page i will just check that it have any value or not&lt;br&gt;like &lt;br&gt;if request.servervariable(&amp;quot;http_username&amp;quot;)&amp;lt;&amp;gt;&amp;quot;&amp;quot; then&lt;br&gt;some processing&lt;br&gt;end if&lt;br&gt;&lt;br&gt;as im new so please if you explain me step by step how i can create ISAPI as also i dont know much more abour ISAPI please give me full step that how i can craete it and then again how i can access it in my asp page.&lt;br&gt;&lt;br&gt;Thanks :&lt;br&gt;Arun Chaudhary&lt;br&gt;</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#692024</link><pubDate>Tue, 08 Aug 2006 14:42:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:692024</guid><dc:creator>David.Wang</dc:creator><description>Arun - I suggest using Session Variables to accomplish what you want.&lt;br&gt;&lt;br&gt;Using ISAPI to set custom variables will not do what you describe because such variables do not &amp;quot;carry over&amp;quot; between pages.&lt;br&gt;&lt;br&gt;I suggest searching the web for basic documents on how web technologies work.&lt;br&gt;&lt;br&gt;//David</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#750865</link><pubDate>Tue, 12 Sep 2006 20:43:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:750865</guid><dc:creator>Ravichandran</dc:creator><description>I am trying to retrieve an header value and empty it before it is written to the IIS log. Based on the code example given I am able to access the header. But how to modify it. Primarily we are having issue with Site mind assertions being logged in the IIS and we do not want to have it logged.</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#2984311</link><pubDate>Wed, 30 May 2007 11:32:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2984311</guid><dc:creator>Vir</dc:creator><description>&lt;p&gt;How to Retreive Request Headers using VB.net.can any one knows the synatx for that.if yes please provide with a sample code for that&lt;/p&gt;
</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#5118193</link><pubDate>Tue, 25 Sep 2007 14:11:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5118193</guid><dc:creator>naveen</dc:creator><description>&lt;p&gt;How to forward the request headers when we want redirect the request.&lt;/p&gt;
</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#8424684</link><pubDate>Fri, 25 Apr 2008 23:09:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8424684</guid><dc:creator>Frankel Lipshitz</dc:creator><description>&lt;p&gt;Duuuuuuuude.... &amp;nbsp;this was really helpful! &amp;nbsp;Thanks, man!&lt;/p&gt;
</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#8919696</link><pubDate>Tue, 02 Sep 2008 13:00:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8919696</guid><dc:creator>Gopi</dc:creator><description>&lt;p&gt;This is an excellent post, I am surprised to see the IIS behavior and understood now. Parsed all_http to solve my problem. Thanks a lot David. &amp;nbsp;Thanks!&lt;/p&gt;
</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#9632675</link><pubDate>Wed, 20 May 2009 21:33:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9632675</guid><dc:creator>Paul</dc:creator><description>&lt;p&gt;Great information David! &amp;nbsp;Quick question for you. &amp;nbsp;I see that you can set a value for a header in an ISAPI filter using &amp;quot;SetHeader&amp;quot;. &amp;nbsp;How can you do this using an ISPI Extension? &amp;nbsp;I've got an existing extension that we're using to block SQL injection. &amp;nbsp;We want to modify it to prevent XSS using header variables like the HTTP_ACCEPT_LANGUAGE header.&lt;/p&gt;
</description></item><item><title>re: HOWTO: Retrieve Request Headers using ISAPI, ASP, and ASP.Net</title><link>http://blogs.msdn.com/david.wang/archive/2006/04/20/HOWTO-Retrieve-Request-Headers-using-ISAPI-ASP-and-ASP-Net.aspx#9632676</link><pubDate>Wed, 20 May 2009 21:33:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9632676</guid><dc:creator>Paul</dc:creator><description>&lt;p&gt;Great information David! &amp;nbsp;Quick question for you. &amp;nbsp;I see that you can set a value for a header in an ISAPI filter using &amp;quot;SetHeader&amp;quot;. &amp;nbsp;How can you do this using an ISPI Extension? &amp;nbsp;I've got an existing extension that we're using to block SQL injection. &amp;nbsp;We want to modify it to prevent XSS using header variables like the HTTP_ACCEPT_LANGUAGE header.&lt;/p&gt;
</description></item></channel></rss>