[jQuery] Access DOM cross-domain

[jQuery] Access DOM cross-domain


I'm playing around with writing a server-side script that generates
JSONP from content that is downloaded by the script (URL is passed to
script from querystring). Is there a better way to do it than to
encode it as base64, or is there a work-around that doesn't require
any server-side code? I'm basically trying to get access to a given
page's DOM cross-domain using minimal server-side code. I suppose one
thing that would be needed here is a regex to replace non http src
attributes.
Here is what I have so far:
//test.htm
<body>
<div id="mydiv"></div>
<script src="jquery.js"></script>
<script src="jquery.base64.js"></script>
<script>
function callback(e){
alert(e.data);
alert($.base64Decode(e.data));
$("#mydiv").html($.base64Decode(e.data));
}
</script>
<script src="test.aspx?url=www.wikipedia.org"></script>
</body>
//test.aspx
<%@ Page Language="C#" AutoEventWireup="true" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.Text" %>
<script runat="server">
void Page_Load( object sender, EventArgs e ){
string url = Request["url"] ?? "";
Response.Write("callback({data:\""+EncodeTo64(Get(url))+"\"})");
Response.End();
}
string EncodeTo64(string toEncode){
byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes
(toEncode);
string returnValue = System.Convert.ToBase64String
(toEncodeAsBytes);
return returnValue;
}
string Get(string strURL){
WebRequest myWebRequest = WebRequest.Create("http://"+strURL);
WebResponse myWebResponse = myWebRequest.GetResponse();
Stream ReceiveStream = myWebResponse.GetResponseStream();
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
StreamReader readStream = new StreamReader( ReceiveStream,
encode );
return readStream.ReadToEnd();
}
</script>