views:

432

answers:

5

Hello Guys

I Need to do cross domain Ajax request - Here is my code

 $.ajax(
        {
            url: redirectURL,
            data: $('#login-container form').serialize() + querystring,
            type: 'post',
            cache: false,
            dataType: 'jsonp',
            jsonp: 'jsonp_callback',
 });

Error: [Exception... "Access to restricted URI denied" code: "1012" nsresult: "0x805303f4 (NS_ERROR_DOM_BAD_URI)" location: "http://testsite/assets/scripts/jquery-1.3.2.js Line: 19"] Source File: http://testsite/assets/scripts/jquery-1.3.2.js Line: 19

I have checkout the following links too -

http://stackoverflow.com/questions/51283/access-to-restricted-uri-denied-code-1012

 $.ajax(
        {
   url: redirectURL+'?callback=?',
            data: $('#login-container form').serialize() + querystring,
            type: 'post',
            cache: false,
            dataType: 'html' });

I have tried Callback in url too . I had already seen all link in stackoverflow regarding this issue.. but not able to overcome this thing Can anyone please help and tell me how to overcome !! Thanks

A: 

"I need to do cross domain Ajax request"

You can't do that, unless:

  • you are using grease monkey
  • you are making a jsonp request which isnt really ajax
mkoryak
and guess what. if you look at his code he does a jsonp request
jitter
So could you please suggest a way by which i can use $.ajax in order to access my redirectURL
Monu
+13  A: 

You won't be able to do a cross-domain POST request in the browser.

If you are making a JSONP call to access a cross-domain URL, you can use JQuery's getJSON method. This would allow you to make a GET request only. If you can submit your login information to the redirectURL using GET parameters, you could make this work.

Note that POSTing to remote login forms is perhaps the best example of why browsers disallow cross-domain requests like this. You don't want a page that looks like your bank to be able to actually serve you data from your bank's website -- that would make a very effective phishing page.

On the other hand, if you really want to work around this, you can write some server-side code that, given the input parameters, makes a post request to the redirectURL and funnels back the response.

Please tell me you are not writing a phishing page.

Shimon Rura
+1 for "Please tell me you are not writing a phishing page."
Boldewyn
+3  A: 

JSONP is not really Ajax in a way that it does not use XMLHttpRequest but a dynamic script element. jQuery makes this transparent but JSONP still requires the following to work:

  1. HTTP GET only, you can't use POSTs
  2. the server needs to support it by wrapping the response in a call to the callback you specify

Check if the URL you request supports JSONP and change the call to an HTTP GET.

Josef
+5  A: 

one way to do it is to use ur server as a proxy

ajaxrequest ---> your server ---> the server of interest

ajaxhanlder <--- your server <--- the server of interest

Dapeng
+2  A: 

If you do control the remote server, too, in recent browsers (IE8, FF3.5) you can overcome the cross-domain obstacle:

IE's XDomainRequest method and the W3C's and Mozillas Origin-Header.

In short, if your server sends back the HTTP header

Access-Control-Allow-Origin: *

with the AJAX response, IE and Mozilla will accept it, even if the request stems from a different domain. You can narrow down allowed requesting domains by replacing the * with them.

Boldewyn