As I mention in the Ajax over SSL in IE 6 thread, this covers a small shitty where the requestor refuses to send out the packet
A few insights I've discovered whilst developing my own, cross-broswer AJAX object, sorry but I'm not posting the code guys - it's getting HUGE and spread over several files but...
The 12030 'bug' is not just restricted to SSL! It seems to occur whenever a port number is used in the URL. I can't confirm if this includes port 80 as to be honest, I haven't checked, but I can confirm it always heppens when I use a FULL URL complete with any non-standard port number, even if it is the same port as the host website.
A little pre-amble to help explain what I've discovered before offering a few tips to help get around the problem.
I found this same error when using the MS 'ASP.Net Development Server' on my local PC which fires up to load a site for testing/debugging purposes in programs such as VWD etc.
When this Dev Server loads, it uses weird and wonderful port numbers so as not to conflict with other ports already in use on the local PC (e.g. Port 80 is often assigned to Personal Web Server).
In my AJAX routines, I have a function which always converts the relative URL to the full, absolute URL. Simply put, this is a BIG mistake.
Use RELATIVE URLs people!
If your site is using Port 80 (or any other port for that matter) - and the URL you're posting to is in the same site, on the same port - don't try and get clever by converting the URL of the AJAX component to the full URL (complete with '
http://MySite/...').
If your site *must* use a port other than port 80, load the whole site using that port before you start using AJAX, then continue to use relative addressing for your all your AJAX URLs.
Don't try and load an SSL page (or any port number - even the SAME port as the website location) with an absolute URL via AJAX - It will die horribly in IE6+ with the dreaded 12030 error.
So, as a quick example of good/bad URLs to use:
If your base website address is:
http://localhost:1765And you want to access, via AJAX, the page:
http://localhost:1765/Content/Default.htmDo NOT use the above URL in your AJAX component, convert it to a relative address like:
/Content/Default.htm
Or:
Content/Default.htm
(The latter if you are calling the page from the ROOT of the site).
This causes a slight problem for everyone who's website intends to pass info over SSL when their base website uses Port 80. However, you *might* find it will work if you *always* load the base URL using 'https' instead of 'http'.
Not a perfect answer I admit, but hey - we're here to help each other so try it guys and let others know what you find!