Closed Bug 38488 Opened 25 years ago Closed 23 years ago

Proxy:junkbuster is broken - use http/1.0 to get arround this

Categories

(Core :: Networking: HTTP, defect, P3)

defect

Tracking

()

VERIFIED INVALID

People

(Reporter: st.n, Assigned: darin.moz)

References

()

Details

(Keywords: relnote)

From Bugzilla Helper: User-Agent: Mozilla/5.0 (X11; U; Linux 2.2.14 i686; en-US; m16) Gecko/20000505 BuildID: 2000050513 When using multiple browser windows, Mozilla doesn't display the correct content in some windows: it tries to load the page from the wrong site. This only seems to happen when using an HTTP proxy, not with a direct internet connection. Reproducible: Always Steps to Reproduce: 1. Load HTML pages from two different sites in two windows 2. middle-click on a link in one window to open a new window with a new page from this site 2a. if that didn't produce an error yet, repeat in the other window Actual Results: Say we have loaded http://foo.com/ and http://bar.org/ in two windows, and want to display http://foo.com/new/page.html in a third window. The location field on top displays that URL, but the actual page loaded is http: //bar.org/new/page.html, which usually gives a 404 error message.
Did anybody read this bug report from me? Should I vote for it? Did I choose the wrong component? It is still marked unconfirmed, but this bug happens to me all the time when browsing with Mozilla and makes it rather unusable for me, since I always have lots of seperate windows when browsing. I've just seen an even easier way to reproduce this bug: - Configure Mozilla to use an http proxy, as I said before, - load http://frankfurt-inline.de/ , - while the page is still loading, click on the top left link called "TNS Frankfurt" (maybe you need a not-so-fast Internet connection for this), - if you still didn't get the "forbidden" error message, click on the "back" button and try again If you need more details, please tell me.
Summary: can't have multiple windows when using an HTTP proxy → can't have multiple windows when using an HTTP proxy
You have the right component and the bug report seems well enough. It may be that no one who has read it has a proxy to test with.
You can set up a small local proxy quite easily with junkbuster, see http://junkbuster.com/ijb.html or http://waldherr.org/junkbuster/ for more info. As a neat side effect, you can configure it to block banner ads. :-)
NB: Junkbuster doesn't work with HTTP 1.1 (which Mozilla uses by default). st.n@gmx.net - are you using Junkbuster? Set: user_pref("network.http.proxy.keep-alive", false); in prefs.js to turn off HTTP 1.1. Gerv
Yes, I'm using Junkbuster and indeed with this user_pref workaround I don't get this bug any more. Finally Mozilla gets kind of usable - thanks! But I would still consider this bug alive, since IMHO Mozilla should be able to talk to 1.0 and 1.1 servers or proxies by default. Or is junkbuster doing anything wrong? Sorry for the delay, but I wasn't able to check this out because of other bugs/crashes in Mozilla and due to other work.
setting to NEW
Status: UNCONFIRMED → NEW
Ever confirmed: true
*** Bug 42131 has been marked as a duplicate of this bug. ***
Changing platform and OS to All/All as suggested by wdormann@crosswinds.net in a comment to bug 42131.
OS: Linux → All
Hardware: PC → All
I've noticed new HTTP version settings in the debug prefs, so I'm changing the summary to something more appropriate IMHO.
Summary: can't have multiple windows when using an HTTP proxy → can't use an HTTP/1.0 proxy like Junkbuster without changing debug prefs
*** Bug 40849 has been marked as a duplicate of this bug. ***
future.
Assignee: gagan → ruslan
Target Milestone: --- → Future
Could this be yet another manifestation of bug #20145? The behavior I got in recent builds (M17 nightlies) is the same as the symptoms of that bug, but the workaround listed above fixes it. Are these two bugs related?
*** Bug 45635 has been marked as a duplicate of this bug. ***
Status: NEW → ASSIGNED
This may or may not be related, but a request for htt://www.domain.com/ followed by a request for http://www.domain.com:8000/ exhibits the same behavior (namely pulling requests from the wrong server). I say this may not be related because the HTTP/1.1 keep-alive work-around does not seem to fix it.
I think the proper prefs.js option is user_pref("network.proxy.http.keep-alive", false); instead. The suggestion above doesn't work for me.
*** Bug 48898 has been marked as a duplicate of this bug. ***
*** Bug 47894 has been marked as a duplicate of this bug. ***
*** Bug 47929 has been marked as a duplicate of this bug. ***
*** Bug 46246 has been marked as a duplicate of this bug. ***
*** Bug 57405 has been marked as a duplicate of this bug. ***
*** Bug 55857 has been marked as a duplicate of this bug. ***
Adding mostfreq keyword.
Keywords: mostfreq
Nominating for user release note. This is reasonably important :-) Gerv
Keywords: relnoteRTM
Whiteboard: relnote-user
*** Bug 59732 has been marked as a duplicate of this bug. ***
*** Bug 59822 has been marked as a duplicate of this bug. ***
please add mozilla0.9 keyword! it's a mostwanted so I think it should be fixed as quick as possible! is there a possibility to auto-detect the http-version of a proxy server? if not make it a pref under "proxies" to turn 1.1 off
If this isn't fixed, please make sure that "junkbuster" appears in the release notes, and not a reference like "proxy that uses HTTP/1.0." I think the average Joe wouldn't know what was being referred to unless specific products are mentioned.
I'd like to release note this but I'm not sure what it's about. Could someone summarize for me?
Summary: Mozilla needs to be configured to work properly with proxies such as Junkbuster that do not support the most recent HTTP specification. By default, Mozilla tries to use HTTP 1.1. To use with Mozilla with a proxy that only supports HTTP 1.0, edit the HTTP Version from 1.1 to 1.0 in Edit -> Preferences -> Debug -> Networking. Please edit for spelling, grammer, wording, semantics, correctness, as you see fit. I don't know if there are other specific proxies for which this is a problem. If there are they should probably be named as well.
*** Bug 60589 has been marked as a duplicate of this bug. ***
*** Bug 59878 has been marked as a duplicate of this bug. ***
*** Bug 59878 has been marked as a duplicate of this bug. ***
*** Bug 59878 has been marked as a duplicate of this bug. ***
Assignee: ruslan → gagan
Status: ASSIGNED → NEW
Target Milestone: Future → M19
pulling in ruslan's necko bugs ->darin
http bugs to "Networking::HTTP"
Assignee: gagan → darin
Component: Networking → Networking: HTTP
Blocks: 61691
Removing myself from the list of cc's.
*** Bug 63354 has been marked as a duplicate of this bug. ***
*** Bug 62942 has been marked as a duplicate of this bug. ***
How do I set the HTTP version to 1.0 without rebuilding to enable the debug preferences?
It is described above in the comment 2000-11-17 05:41 from Stephen Ostermiller and also in the release notes: http://www.mozilla.org/releases/mozilla0.7/#general , look for the headline "Proxies".
Ummm... Wasn't the question about builds without the debug preferences compiled? I don't know how to change the pref in such builds.
you can set the pref "network.http.version"
With recent nightly builds (e.g. 2001012904 Win32) I have to turn off "Enable Keep Alive" as well as setting the HTTP version.
Has someone filed bugs on Junkbuster and any other proxies we're seeing this on?
I sent an email to the folks at JunkBuster when this was reported. Whether or not it is a real "bug" to only support http 1.0 or not is another question.
Is there any way we can detect the proxy barfing and fall back to HTTP 1.0? Gerv
Target Milestone: --- → Future
Keywords: mozilla1.0
*** Bug 70314 has been marked as a duplicate of this bug. ***
*** Bug 61119 has been marked as a duplicate of this bug. ***
I'm having some trouble getting Mozilla to cooperate with Squid (http://www.squid-cache.org), primarily when dealing with form submission. Could Mozilla's http 1.1 use be related to this? That is, does Squid react badly when http 1.1 is used?
My recollection is that HTTP 1.0 and 1.1 should be painlessly forward and reverse compatible. If this is the case, then there is something wrong with the way we talk to Junkbuster, and possibly with the way we handle headers in our requests or responses. I'm going to put this on my list of problems to analyze, but I have a couple other projects at the top of my list of proxy issues. Does anyone want to jump start a discussion on this in the newsgroup?
Turning keep alive's off also solved it for me. I haven't had to change to HTTP 1.1 and so far it's looking good (Linux, Milestone 0.8)
*** Bug 69015 has been marked as a duplicate of this bug. ***
Keywords: nsCatFood
Just came across this bug while trying to figure out why Mozilla was behaving strangely with my Proxomitron (see "http://proxomitron.cjb.net/") proxy. With Proxomitron Naoko-3, which seems to be an HTTP 1.0 proxy, I had all manner of keep-alive problems. However, setting HTTP version to 1.0 and disabling Keep-Alive in the debug preferences of Mozilla did NOT make any difference. (this is Mozilla 0.8.1 release running under WinNT 4.0). I was able to make Proxomitron work correctly by setting some rules in it to rip out all outgoing "Keep-Alive:" headers, and forcing in a "Connection: Close" header. Testing out a beta release of Proxomitron Naoko-4, which DOES support HTTP 1.1, made all my problems go away. I mention this for the edification of anyone who, like myself, comes across this bug report while having Proxomitron problems.
Status: NEW → ASSIGNED
Keywords: nsbeta1
Target Milestone: Future → mozilla0.9.1
*** Bug 69241 has been marked as a duplicate of this bug. ***
Interestingly, recent builds work with Junkbuster without having to futz with the debug settings (keepalive or http version). (e.g. 2001-0404-04 Win32)
cool! marking WORKSFORME. please reopen if you're still seeing the problem.
Status: ASSIGNED → RESOLVED
Closed: 24 years ago
Resolution: --- → WORKSFORME
FYI It works for me as well, using Nightly 2001040404 on WinNT, AdSubtract Pro proxy, and browsing to http://www.pcmag.com. All Debug options are at default values.
It works for me too. But that leaves one question. What has changed that fixes this bug? Does anyone know, or are we going to leave it at this?
this is a really old bug... many things could have fixed this.
*** Bug 75727 has been marked as a duplicate of this bug. ***
This is back again, I have to turn off Keep-Alive in Edit/Preferences/Debug/Networking when using Junkbuster. using 2001072303 win-32. See also bug 90673.
Status: RESOLVED → REOPENED
Resolution: WORKSFORME → ---
Yes, you will need to set the http-version to 1.0, and probably disable keep-alives as well (as mentioned in the junkbuster documentation) The patch for bug 84264 went in, and this will break junkbuster, because, in combination with the fix for bug 87047, we will now do keep-alives to http/1.1 servers without a connection header, and reuse connections to proxies to talk to multiple servers. This is valid since persistence is hop-by-hop. junkbuster keeps a connection open directly between the client and the origin server, basically tunneling the connection (which is prohibited by the specification). It does this even though it strips the connection: header (which is required by the http/1.1 standard, but junkbuster doesn't support that version of the spec). Junkbuster identifies itsself as having whatever http version the end server does (Which is prohibited by the specification), so restricting this optimisation to a particular version of http (ie > HTTP/1.0) won't help. Resolving INVALID. Also see bug 91711 and bug 90673.
Status: REOPENED → RESOLVED
Closed: 24 years ago23 years ago
Resolution: --- → INVALID
That first bug should be bug 91771, sorry.
This bug should be reopened, or a new bug filed. This really doesn't have anything to do with Junkbuster, but it does have to do with proxy behavior, and the bug which seemed most appropriate for the behavior I see was marked as a dup of this one. Starting with the nightly build I downloaded Tuesday, Mozilla is now causing frequent (90+ percent of websites) proxy errors. Last night's build does the same thing. This behavior is a complete blocker for me; I had to go back to the last build I had backed up on my computer, which was 2001071704 (Windows NT), to get normal behavior. Please don't let this behavior get into 9.3!
For a long time, I had suspected something strange was going on, and apparently in some of the other junkbuster bugs, bradley has figured out that it isn't the most compliant product.
It's not only junkbuster. Here at work i'm seeing the same thing with the nightly i downloaded a few hours ago. It takes a lot of patience surfing through some sites (trying Slashdot as i type this.) I'm not sure which proxy we're using over here, and nobody will tell me either. :) I'm pretty sure it's not Junkbuster though. It's more likely some vague solution by Microsoft (i guess, because they are 'our' designated 'favorite' supplier)
We have Microsoft proxies here where I'm seeing the problem as well. And again, on my machine, I'm not using Junkbuster. But this was the bug that seemed to be the most fitting for the problem I'm seeing.
Casey: Does it work if you set the http version to 1.0? What about if you disable keep-alives (with the http version set to 1.1)? (You can do this in the debug pref panel) martijn: You can probably find out what proxy server you're using by telneting to the host and port, and doing: GET http://www.mozilla.org/ HTTP/1.0 Host: www.mozilla.org <blank line> and then looking at the Via: line in the response headers. benc: Can you point me (separately) to an in house ms proxy server? This may be a separate bug... Does this happen if you get a build from last Friday morning (Jul 20)?
If I turn keep-alive off and set http version to 1.0, the problem goes away. But what happened in the last couple of days to make this necessary? (I haven't been able to test last Friday's build as yet). Additionally, if whatever it was that changed this isn't going to be fixed, the Release Notes should detail the solution, though many users might not look at them before giving up.
Casey - we now better reuse connections to proxy servers. Can I get some packet traces of connections to the server, just so that I can see whats happening? (both from mozilla and from ie) Does it work if you leave keep-alives on, but set the http version to 1.0? (IE defaults to 1.0 for proxy servers) Can you attach packet logs with ie set to use http/1.1 to proxy servers as well?
Sorry to disappoint you, Bradley, but I don't know how to do all that packet traces stuff you spoke about. If you could give some brief directions, I'd be happy to oblige.
*** Bug 93563 has been marked as a duplicate of this bug. ***
*** Bug 92542 has been marked as a duplicate of this bug. ***
*** Bug 94038 has been marked as a duplicate of this bug. ***
Changing summary to hopefully catch dupes, and to reflect that this bug is only about junkbuster. If people are seeing this on other proxy servers, then they need to open a new bug For details on why, see my comment of 2001-07-23 22:00. For a workarround, setting your http version to 1.0 may help (as specified in the mozilla release notes, and in the junkbuster FAQ page). Junkbuster is not http/1.1 complient (or http/1.0 compliant)
Summary: can't use an HTTP/1.0 proxy like Junkbuster without changing debug prefs → junkbuster is broken - use http/1.0 to get arround this
*** Bug 94382 has been marked as a duplicate of this bug. ***
It seems a bit unfair, at this late date, to say this bug only applies to junkbuster, since many of the comments have dealt with proxies in general, and more importantly, because many other proxy-related bugs that said NOTHING about junkbuster have been marked duplicates of THIS bug.
Casey: every report on this page (and all the dupes) refers to junkbuster. Yours was the only exception, and I think that it may be a separate bug. We can't fix the junkbuster bug - its a bug in the software. http is forwards compatible, except when proxy server completely breaks the spec. If you're still seeing this error with MS proxy, can you file a new bug, assinged to me, and mention the exact text of the error. Do you get the same error if you change the pref in IE to use http/1.1 for proxies? You can work out when we stopped reusing proxy connections this way by looking at when the dupes stopped being reported :) (For the record, the "mozilla bypasses proxy" bugs which were marked as dupes are the same problem; junkbuster only logs the first requst made for a persistent connection, so it looked like the proxy was being bypassed)
*** Bug 93512 has been marked as a duplicate of this bug. ***
Hey! I filed a bug on a Microsoft proxy a while back, and it was marked a dupe of this.This is NOT just a problem with Junkbuster.
*** Bug 94507 has been marked as a duplicate of this bug. ***
Sigh. OK, I missed bug 61119 as the dupe. From the error message there, it appears that ms proxy is broken too. Looking at bugs fixed in SP1 like http://support.microsoft.com/support/kb/articles/Q239/4/95.ASP, you may end up with problems anyway. If you run into that sort of problem, then install SP1. The junkbuster problem has no client side work-arround. We cannot fix it in the browser. If the MS proxy problem stays in this bug, then it will not ever be fixed, because the junkbuster bug CANNOT be fixed on the client side. The MS-proxy one may be able to be worked arround, so I've moved that into bug 94753. If it turns out to be a proxy bug (and the advice to disable http/1.1 mentioned in the error mesage of bug 61119 certainly hints at that), then I'll dupe it against this, and change the summary.
*** Bug 94429 has been marked as a duplicate of this bug. ***
*** Bug 94725 has been marked as a duplicate of this bug. ***
*** Bug 94725 has been marked as a duplicate of this bug. ***
Since this is so frequently encountered, how about following IE5.0 and making it the default that Mozilla does not use HTTP/1.1 (for proxies only)? This would improve the out-of-box experience for people using broken proxies, although perhaps it is better in long run to make people experience this to get the proxies fixed!
The problem is that that would disable keep-alives to proxy servers, and disable some of the cache algorithms on the cache side, which would slow things down a lot. It has been discussed that we should have a separate pref for whether proxies should be talking 1.1, but I still think that 1.1 should be the default. Since this only affects Junkbuster (and one other server called "CookieCop Plus", originally published by PCMag). I'd prefer not to do this. Junkbuster doesn't add any header linss, so we can't detect that we're using a broken proxy and disable keepalives that way. If someone wants to come up wioth a patch for junkbuster to not blindly forward the http version, that would be great. I may do so at some point, if I find time.
*** Bug 94965 has been marked as a duplicate of this bug. ***
*** Bug 94966 has been marked as a duplicate of this bug. ***
i agree with bbaetz. http/1.1 persistent connections were designed with proxy servers in mind, and to disable http/1.1 by default just for compatibility with a broken proxy seems like it wouldn't do anything to help the situation. it's a noble goal, trying to build a browser that is compatible with everything out there, but at the cost of improving the performance of the internet, i think we really must maintain http/1.1 as our default http version.
*** Bug 96719 has been marked as a duplicate of this bug. ***
*** Bug 90673 has been marked as a duplicate of this bug. ***
Clearing target milestone to avoid confusion in the most frequent bug list.
Target Milestone: mozilla0.9.1 → ---
*** Bug 95961 has been marked as a duplicate of this bug. ***
A simple solution that would placate both sides of this issue would be to extend the image blocking capability in Mozilla to block URL regexps. This would subsume the need for people to use a broken proxy server (junkbuster). The current image blocking is indeed a nifty feature (I started using Mozilla as my primary browser when this feature was added), but it being so limited to having to manually deny each ad site (ad1.annoy-me.com, ad2.annoy-me.com, ad nauseum) as well as not being able to block simple sub-site hierarchies (www.good-but-ad-supported-site.com/banner-ads/*) necessitates that many are required to retain the junkbuster proxy. The URL regexp matching code in junkbuster is quite small and could easily be added...
*** Bug 99389 has been marked as a duplicate of this bug. ***
*** Bug 100794 has been marked as a duplicate of this bug. ***
*** Bug 100527 has been marked as a duplicate of this bug. ***
*** Bug 100920 has been marked as a duplicate of this bug. ***
*** Bug 104641 has been marked as a duplicate of this bug. ***
For those of you who still use JunkBuster, and would rather you don't have to F around with the clients in order for them to behave, the following parameter in the JunkBuster config works for me: # add an "X-Forwarded-For:" specification to each request header # add-forwarded-header I'm not sure exactly WHY it works, but it appears to. Hopefully this will help other people with the same problem.
That does nothing. It only adds the "X-Forwarded-for:" header to the GET request. Because HTTP 1.1 still doesn't work, you still get the bad behaviour. Try it. Set your HTTP ver to 1.1 in debug->networking.
*** Bug 104594 has been marked as a duplicate of this bug. ***
add-forwarded-header didn't seem to work for me either ....
Yes, I was full of **** there. It seemed to work, apparently because the cache was skewing my results. However, in addition to just setting HTTP/1.1, you can also turn off "Enable Keep-alive". This is confirmed to work. It's the keep-alive that confuses junkbuster.
*** Bug 105414 has been marked as a duplicate of this bug. ***
there is a newer version of junkbuster available at: http://sourceforge.net/projects/ijbswa/ which MAY resolve some of the issues described
From their project plan: Next Release 3.4 ================ -http/1.1,persistent connections, H I don't think http 1.1 support is implemented yet.
We don't want 1.1 support, just HTTP/1.0 support. I'll check cvs, and file a bug with them if its not fixed.
I contribute to the project at http://sourceforge.net/projects/ijbswa/ Yes, it does support the HTTP/1.1 protocol. As has been indicated, persistent connection is planned for a later date. Our proxy properly accommodates the persistence issues as per the rfc's, so there is no need to downgrade a browser back to the 1.0 protocol. Hopefuly it can handle any valid construct you can throw at it. I and others on the project are fully aware of this bug caused by the old Junkbusters 2.0 version. We understand exactly what it is and we have captured detailed logs of it. This is Not an issue in our product. Our project is entering a Beta period where we will shake out various issues before rolling out the next major version. You are all welcome to get our latest versions for whatever platforms and give it a workout. We would welcome any bug reports, feature requests, etc. Ours is also a completely open-source project. We have many additional features and enhancements that are beyond the scope of the old Junkbusters 2.0 product. Anyone accustomed to that should be quite pleased with what we have to offer, not the least of which is full compatibility with Mozilla. We are not the original developers of the Junkbusters proxy and we are not affiliated with Junkbusters.Com. As our project continues to evolve we may no longer be able to claim to be a "Junkbusters" proxy, though the ancestry is still obvious today.
*** Bug 100052 has been marked as a duplicate of this bug. ***
*** Bug 107761 has been marked as a duplicate of this bug. ***
*** Bug 107760 has been marked as a duplicate of this bug. ***
relnoteRTM -> relnote added "proxy" to subject for searchability
Keywords: relnoteRTMrelnote
Summary: junkbuster is broken - use http/1.0 to get arround this → Proxy:junkbuster is broken - use http/1.0 to get arround this
Whiteboard: relnote-user
*** Bug 111134 has been marked as a duplicate of this bug. ***
*** Bug 111231 has been marked as a duplicate of this bug. ***
*** Bug 111573 has been marked as a duplicate of this bug. ***
*** Bug 111652 has been marked as a duplicate of this bug. ***
My, bug (111652) has been marked a duplicate. Also, I see *this* bug is marked as RESOLVED. However, I am NOT using the 'JunkBuster' proxy server. (I am using 'Sambar Server' (Sambar.com) for a proxy) REGARDLESS of what proxy software I'm using, this bug manifests in Mozilla and NOT in NS4x or IE. In the court of public opnion, if other browsers DO work correctly and Mozilla does not, marking this resolved is analogous to 'guilty-no-contest' -the average user doesn't care about underlying protocols, they measure status-queo betw other browsers and this one -behaving in an expected fasion -and will ONLY blame this browser -and continue to send in 'duplicate' bug reports. Very respectfully, ken
Status: RESOLVED → REOPENED
Resolution: INVALID → ---
This bug *is* invalid. Junkbuster is broken when using HTTP/1.1. It breaks the HTTP/1.0 RFC by forwarding the entire status line from the origin server to the client. This breaks the fundamental part of the forward compatability rules, since the client cannot know what it is - see other discussion in this bug for the problems it causes. Since junkbuster doesn't identify itsself, there is no way that we can automatically detect this. ns4 only uses http/1.0, and IE disables HTTP/1.1 for proxies - (there have been unconfirmed reports that some of MS's proxy servers have the same problem) You can disable HTTP/1.1 by following the instructions in thies bug, and then it will work. This will, of course, decrease the performance of the browser, which is why we don't default to HTTP/1.0. If you're not using junkbuster, your proxy server probably has a similar problem. I see you're reopened it - someone will look into it, then.
Status: REOPENED → RESOLVED
Closed: 23 years ago23 years ago
Resolution: --- → INVALID
I just wanted to apologize for my last comment very possibly sounding too critical, but I really love this effort and want to see it succeed. I cant emphasize enough that its the average user we are dealing with -who will blame this behavior on the *one* piece of software where they see it manifest. There is also a *haunting* security implication anytime *any* data is GET/POSTed to the wrong host. Would defaulting to http/1.0 proxies be prudent here (if we cant test the proxy's http version)? Thank You for the synopsis response by the way.
Currently the pref for the proxy version and the server version is the same. Darin has a bug somewhere to separate those, but I can't find it ATM. Maybe the default for that should be 1.0. the problem is that a lot of the perf improvments for 1.1 are aimed at proxies. Maybe we could just have a separate pref, disabled by default, to reuse the same proxy connection to different hosts. I have the feeling that that woudl just make the problem more subtle, since thats not the only difference between 1.0 and 1.1 The security issue is the proxy's fault - we tell it what host to send data to, and it ignores us, whilst claiming that it follows the http/1.1 spec.
I'd just like to point out that the current development version of junkbuster, http://ijbswa.sourceforge.net/ , has HTTP/1.1 support and shouldn't suffer from these problems. Unfortunately it's still in alpha, but it could be worth pointing out to junkbuster + mozilla users.
Might I suggest that Mozilla resolve its proxy issues the way that Opera does. Most people using Opera through proxies might be surprised to find out that it really is a HTTP/1.1 browser. When a proxy is configured, Opera sends a "OPTIONS * HTTP/1.1" request to that proxy as the first communication with it. This is done once and only once in the browser session just before the first "real" request to the proxy. Below is a snapshot of those request headers using the old 5.11 version: OPTIONS * HTTP/1.1 User-Agent: Opera/5.11 (Windows 98; U) [en] Host: 172.20.1.115:8000 Accept: text/html, image/png, image/jpeg, image/gif, image/x-xbitmap, */* Accept-Language: en Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0 Connection: Keep-Alive Note that the Host: header targets the proxy itself as configured to Opera. If the proxy responds with anything other than "HTTP/1.1 200 OK" then Opera will communicate using HTTP/1.0 with the proxy for the rest of the session. If the proxy responds with "HTTP/1.0" or if it responds with other than 200 then it's treated as a HTTP/1.0 proxy. On the other hand, if the proxy responds properly to the OPTIONS request then all future communication with it will use the HTTP/1.1 protocol and features, including connection persistence, TE: headers, etc. I haven't been able to find any documentation about this on Opera's or any other site, though it surely must be out there someplace. It seems to be a reasonable solution since it places the burden of protocol determination on the proxy and gives it a chance to indicate whether it can handle the HTTP/1.1 protocol. Many proxies can not, and this provides quick and easy detection of them. The method works without end-user involvement or special configuration options. Unfortunately, I can't tell how many "capable" proxies this falsely identifies as being the old HTTP/1.0 generation (anybody know somebody at Opera?). I doubt that any of the old "incapable" proxies would be falsely identified.
very interesting suggestion. i just tried it with a proxy server that i know supports HTTP/1.1 and i unfortunately got a 500 response. so, i'm not sure how realistic this approach would be. IMO at the bare minimum, it would be good to provide checkboxes in the proxy server configuration preferences panel to downgrade to HTTP/1.0 and/or downgrade to not using persistent connections to help with bad/broken/old proxy servers.
Opera released their new version 6.0 today and that version no longer issues the proxy's OPTIONS request. Perhaps they had good reason to stop doing it. Opera 6 now seems to be using the response from the first real (GET) request to determine what protocol to use through the proxy. The first GET uses HTTP/1.0, and if that request's response comes back as HTTP/1.0, then that's what it always uses for the session. If the response contains HTTP/1.1 then it always uses that instead. I don't like this approach since the HTTP response may depend upon the particular target site as well as the proxy(s). Performance and features could be radically affected by an individual's choice for the first request (often the home page). I really wanted to see the OPTIONS method succeed because that would have given the proxy's an opportunity (or really a responsibility) to be involved in the protocol level determination. While I agree completely that a user should be able to specify a setting, most users will not have a clue what to select. There should be some way for proxies and browsers to work together to determine a best-guess protocol level based on the technical environment at hand.
> I don't like this approach since the HTTP response may depend upon the > particular target site as well as the proxy(s). This is incorrect. It _should_ only depend on the proxy - thats the bug here. Checking the first site won't help - you'll still have the same problem
bbaetz: exactly! the thing about the extra preferences in the proxy panel is that users could then try those if the browser has problems. we could make the text for those preferences very user friendly... "try this if you have problems accessing the internet through the proxy server" etc...
darin: You own the bug on a spearate pref for proxies, IIRC...
right, and one day i plan to fix that along with the preferences panel for proxies.
>> I don't like this approach since the HTTP response may depend upon the >> particular target site as well as the proxy(s). > This is incorrect. It _should_ only depend on the proxy - thats the bug here. > Checking the first site won't help - you'll still have the same problem No, I believe my original statements are correct. Perhaps that is the crux of these proxy issues. I've gone back to the RFC's and I very much disagree with your position. Various quotations below are from RFC 2616. Your statements presume that any proxy must alter the protocol level of origin servers into one, either all HTTP/1.0 or HTTP/1.1. That presumption is not a requirement of the protocols. If you mandate or assume that for all proxies then your product will never operate properly with proxies that function as Transparent Proxies, Gateways, or Tunnels (as they are defined by RFC 2616). By definition of what it is, a Transparent Proxy will not alter a HTTP/1.0 server's response into HTTP/1.1 (or visa-versa) before sending that response back towards the application. The version of a response depends upon the upline server(s) and not just the immediate proxy. I can not understand how a Transparent Proxy can coexist with your presumption of a single protocol version for all responses. If you will not support even transparent proxying then forget about all of the non-transparent variants. ----- (Section 1.3 in the definition of "server") "Likewise, any server may act as an origin server, proxy, gateway, or tunnel, switching behavior based on the nature of each request." Your product should be able to accommodate responses from a "server" which responds differently based on the nature of each request. As virtual sites and sub-domains proliferate, even some servers that aren't proxies can and do respond to different kinds of requests using different protocol versions. This is often the case where the "server" is a front-end to multiple "origin servers" as defined by the RFC. It seems you can not require a specific protocol response version from a server, even when a proxy is not involved in the stream. Would it break your application if Yahoo served back GIF images using HTTP/1.0 and HTML content using HTTP/1.1? ----- (in Section 1.4) "In fact, there are a wide variety of architectures and configurations of caches and proxies currently being experimented with or deployed across the World Wide Web. {..snip..} The goal of HTTP/1.1 is to support the wide diversity of configurations already deployed while introducing protocol constructs that meet the needs of those who build web applications that require high reliability and, failing that, at least reliable indications of failure." As RFC 2616 is over 2 years old, the complexities have continued to grow. Often a proxy/gateway is only one in a series or network, with various requests being channeled through different paths depending on each request's particular attributes. The assumption of one-on-one clear conversations between a client and the world of servers was invalidated even before HTTP/1.1 was proposed. ----- (Section 3.1) "Proxy and gateway applications need to be careful when forwarding messages in protocol versions different from that of the application. Since the protocol version indicates the protocol capability of the sender, a proxy/gateway MUST NOT send a message with a version indicator which is greater than its actual version. If a higher version request is received, the proxy/gateway MUST either downgrade the request version, or respond with an error, or switch to tunnel behavior." These statements do NOT require that a proxy compliant with the HTTP/1.1 protocol to upgrade /1.0 Responses to the /1.1 protocol. It actually seems to caution against the effects of protocol re-versioning. It does pose restrictions on what a proxy should do with something like a HTTP/3.9 request, but note also that it could just pass that unknown version on using tunnel behavior without being non-compliant. ----- (also in Section 3.1) "Due to interoperability problems with HTTP/1.0 proxies discovered since the publication of RFC 2068[33], caching proxies MUST, gateways MAY, and tunnels MUST NOT upgrade the request to the highest version they support. The proxy/gateway's response to that request MUST be in the same major version as the request." If a proxy is acting as a tunnel for a particular request, then it must follow the Transparent Proxy rules and leave the protocol version untouched. Only a caching proxy "MUST" upgrade a protocol version. Is this the source of your presumption? There exists at least as many non-caching proxies as those that do. Note that it is only the "major" version that must be the same as the request. HTTP/1.0 and /1.1, (and later /1.2 etc.) are acceptable to use as response to any HTTP/1.* request. Will your application break the first time it encounters a HTTP/1.2 server response? ----- (Section 9.2 OPTIONS) "If the Request-URI is an asterisk ("*"), the OPTIONS request is intended to apply to the server in general rather than to a specific resource. Since a server's communication options typically depend on the resource, the "*" request is only useful as a "ping" or "no-op" type of method; it does nothing beyond allowing the client to test the capabilities of the server. For example, this can be used to test a proxy for HTTP/1.1 compliance (or lack thereof)." It still seems like a good idea and much better than anything else I've heard. At least it gives a proxy the chance to indicate its own preference. ----- The title of this bug is "Proxy:junkbuster is broken - use http/1.0 to get arround this". I further qualify that it is the old Junkbuster 2.0.x version that is broken. That version breaks browsers with a mis-assumption of persistent connections, as triggered by configuration of HTTP/1.1 to the proxy. A broad solution would be to restrict the assumption of proxy utilization to the HTTP/1.0 protocol level and let the users decide whether to try the newer protocol. I was suggesting the OPTIONS method, but I wish I knew why Opera may have stopped using it. Presuming or requiring a homogenous protocol response level from any proxy or any other kind of server will introduce new problems for you with a multitude of other proxies, gateways, etc.
*** Bug 114216 has been marked as a duplicate of this bug. ***
*** Bug 115992 has been marked as a duplicate of this bug. ***
*** Bug 117503 has been marked as a duplicate of this bug. ***
*** Bug 121019 has been marked as a duplicate of this bug. ***
*** Bug 123689 has been marked as a duplicate of this bug. ***
*** Bug 131554 has been marked as a duplicate of this bug. ***
*** Bug 131540 has been marked as a duplicate of this bug. ***
*** Bug 131763 has been marked as a duplicate of this bug. ***
*** Bug 134950 has been marked as a duplicate of this bug. ***
*** Bug 138611 has been marked as a duplicate of this bug. ***
*** Bug 107965 has been marked as a duplicate of this bug. ***
*** Bug 144189 has been marked as a duplicate of this bug. ***
Mass removing self from CC list.
*** Bug 148868 has been marked as a duplicate of this bug. ***
*** Bug 147095 has been marked as a duplicate of this bug. ***
*** Bug 152940 has been marked as a duplicate of this bug. ***
Blocks: majorbugs
*** Bug 171902 has been marked as a duplicate of this bug. ***
*** Bug 34391 has been marked as a duplicate of this bug. ***
*** Bug 178840 has been marked as a duplicate of this bug. ***
Verified invalid.
Status: RESOLVED → VERIFIED
QA Contact: tever → junruh
*** Bug 67678 has been marked as a duplicate of this bug. ***
*** Bug 182756 has been marked as a duplicate of this bug. ***
i've run into this one from time to time _without_ using a proxy. it's possible that my dialup isp is using a transparent proxy that exhibits the same bug, but i don't know if that's the case or not.
*** Bug 190604 has been marked as a duplicate of this bug. ***
*** Bug 192337 has been marked as a duplicate of this bug. ***
*** Bug 143816 has been marked as a duplicate of this bug. ***
as the HTTP Options dialog will go away with Mozilla Firebird as default browser, shouldn't the default setting for proxys changed to HTTP 1.0? This has collected 71 dups (place 4 in the stats), I think that's enough to change the default!
*** Bug 234478 has been marked as a duplicate of this bug. ***
*** Bug 198931 has been marked as a duplicate of this bug. ***
No longer blocks: majorbugs
hhhhhhhhhh
You need to log in before you can comment on or make changes to this bug.