Доступ к ограниченному URI отклонен "код:" 1012 - Запрос Ajax для перекрестного домена

Мне нужно выполнить кросс-домен Ajax-запрос - вот мой код

 $.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

У меня также есть следующие ссылки:

Доступ к ограниченному URI-адресу: 1012

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

Я тоже попробовал Обратный вызов в URL-адресе. Я уже видел всю ссылку в stackoverflow по этой проблеме.. но не смог преодолеть эту вещь Может ли кто-нибудь помочь и рассказать мне, как победить! Благодаря

Ответ 1

В браузере вы не сможете выполнить кросс-доменный запрос POST.

Если вы вызываете JSONP-вызов для доступа к междоменному URL-адресу, вы можете использовать метод JQuery getJSON. Это позволит вам делать только запрос GET. Если вы можете отправить свою регистрационную информацию в redirectURL с помощью параметров GET, вы можете сделать эту работу.

Обратите внимание, что POSTing для удаленных форм входа - это, пожалуй, лучший пример того, почему браузеры запрещают подобные запросы. Вы не хотите, чтобы страница, похожая на ваш банк, могла фактически обслуживать ваши данные с вашего банковского веб-сайта - это создало бы очень эффективную страницу фишинга.

С другой стороны, если вы действительно хотите обойти это, вы можете написать код на стороне сервера, который, учитывая входные параметры, делает почтовый запрос в redirectURL и повторяет ответ.

Скажите, пожалуйста, что вы не пишете страницу фишинга.

Ответ 2

Один из способов сделать это - использовать ваш сервер в качестве прокси:

AJAX Request          -> Your server -> Server of interest

AJAX Response Handler <- Your server <- Server of interest 

Ответ 3

JSONP на самом деле не Ajax, так как он не использует XMLHttpRequest, а динамический элемент script. jQuery делает это прозрачным, но JSONP по-прежнему требует работы:

  • Только HTTP GET, вы не можете использовать POST s
  • серверу необходимо поддерживать его, обернув ответ при вызове callback, который вы указываете

Проверьте, поддерживает ли запрашиваемый вами URL-адрес JSONP и меняет вызов на HTTP GET.

Ответ 4

Если вы также управляете удаленным сервером, в последних браузерах (IE8, FF3.5) вы можете преодолеть междоменное препятствие:

Метод IE XDomainRequest и W3C и Mozillas Origin-Header.

Короче говоря, если ваш сервер отправляет обратно HTTP-заголовок

Access-Control-Allow-Origin: *

с ответом AJAX, IE и Mozilla будут принимать его, даже если запрос проистекает из другого домена. Вы можете сузить разрешенные запросы доменов, заменив их *.

Ответ 5

"Мне нужно выполнить запрос Ajax для перекрестного домена"

Вы не можете сделать это, если:

  • вы используете смазку обезьяны
  • вы делаете запрос jsonp, который не является действительно ajax

Ответ 6

запустить его на любом сервере, таком как wamp или apache...

он не дает ошибку...

NS_ERROR_DOM_BAD_URI: Access to restricted URI