Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get cross domain request's response in javascript

I am making a cross domain request in javascript by dynamically adding a script and setting its src attribute to the domain that I need to make request to. For reference: http://alvinabad.wordpress.com/2009/02/13/feb13/

Script code:

var script_id = null;
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', crossDomainURL);
script.setAttribute('id', 'script_id');

script_id = document.getElementById('script_id');
if (script_id) {
    document.getElementsByTagName('head')[0].removeChild(script_id);
}

Now, I need to parse the Response of this request. I have checked the Raw Response from fiddler. The data is there, but it's not in the dom. It starts like this:

<script type="text/javascript">
/* <![CDATA[ */
    if (top == self || parent != top || document.location.hostname != document.domain) 
    {  
        top.location.replace("http:\/\/www.facebook.com\/?gringotts_redir");}
/* ]]> */
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"**... then the rest

The page source shows the javascript embedded by me, how do I parse the data that's generated from that code.

like image 854
sumit_programmer Avatar asked Nov 14 '22 23:11

sumit_programmer


1 Answers

The way this is generally done is to have the script response consist of a function call to a function already present on the page. The browser will not let your code "see" the contents of the imported script, however, for security reasons. The browser will run the script, however, so long as it's valid JavaScript code. In your case, the response is not valid JavaScript code. There can't be a <script> tag or any HTML markup — it must be pure JavaScript code, just like the contents of any other file imported with a <script> tag.

like image 77
Pointy Avatar answered Jan 07 '23 18:01

Pointy