2009-11-05 1 views
13

мне нужно сделать междоменное запрос Ajax - Вот мой кодДоступ к ограниченным URI отказано "код:" 1012 - домен Cross запрос 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 

У меня есть проверка по следующим ссылкам тоже -

Access to restricted URI denied code: 1012

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

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

+1

Что делает URL выглядеть и более важно: действительно ли он вернуть JSONP данные ? – jitter

+0

Вы контролируете домен/сайт, на который вы делаете запрос ajax? Он настроен с помощью json-ответа или jsonp? – Stobor

+0

И у вас есть функция javascript под названием 'jsonp_callback', определенная на вашей странице? – Stobor

ответ

30

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

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

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

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

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

+20

+1 для «Скажите, пожалуйста, что вы не пишете страницу фишинга». – Boldewyn

+1

смешной комментарий. Но иногда бывает так, что вам нужно это делать, когда ваша клиентская GoDaddy QSC (быстрая корзина покупок) настроена, и с общедоступных страниц приземления/присутствия ваш клиент хочет, чтобы какой-то механизм проверки подлинности знал, имеет ли зарегистрированный пользователь достаточных привилегий так что вы можете показать ему/ей Анимированную версию флеш-версии вашего подписчика только для журнала, размещенной на службе, например [http://ISSUE.com] (http://ISSUE.com), а не на старой -styled-Download-PDF-кнопку. !!! –

+1

это уже не так; вы можете отправлять запросы POST на серверы, которые позволяют это с соответствующими заголовками CORS. – oberhamsi

0

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

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

  • вы используете технарь
  • вы делаете jsonp request, который на самом деле не ajax
+0

и угадайте, что. если вы посмотрите на его код, он делает запрос jsonp – jitter

+0

. Не могли бы вы предложить способ, с помощью которого я могу использовать $ .ajax, чтобы получить доступ к моему redirectURL –

3

JSONP на самом деле не Ajax, так как он не использует XMLHttpRequest, а динамический элемент script. JQuery делает это прозрачным, но JSONP все еще требует следующих для работы:

  1. HTTP GET только, вы не можете использовать POST сек
  2. сервер должен поддерживать его, окружив ответ в вызове к callback вас укажите

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

8

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

AJAX Request   -> Your server -> Server of interest 

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

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

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

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

Access-Control-Allow-Origin: * 

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

0

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

это DonT выдает ошибку ...

NS_ERROR_DOM_BAD_URI: Access to restricted URI 
Смежные вопросы