I want to make an XMLHttpRequest to a secure uri (https://site.com/ajaxservice/) from javascript running inside a nonsecure page (http://site.com/page.htm). I’ve tried all kinds of nutty stuff like iframes and dynamic script elements, so far no go. I know I am violating ‘same origin policy’ but there must be some way to make this work.
I will take any kind of wacky solution short of having the SSL protocol written in javascript.
That won’t work by default due to the same origin policy, as you mentioned. Modern browsers are implementing CORS (Cross-Origin Resource Sharing) which you could use to get around this problem. However this will only work in Internet Explorer 8+, Firefox 3.5+, Safari 4+, and Chrome, and requires some server-side work. You may want to check out the following article for further reading on this topic:
You can also use JSONP as Dan Beam suggested in another answer. It requires some extra JavaScript work, and you may need to “pad” your web service response, but it’s another option which works in all current browsers.