2015-02-24 4 views
0

Я пытаюсь подражать запросу формы с jquery. Форма регистрируется на сервере, который возвращает ответ 303 и перенаправляет пользователя на главную страницу.Ajax request 303 response CORS issue

Это прекрасно работает при использовании формы. Однако, при попытке сделать это с помощью AJAX вызова я получаю следующее сообщение об ошибке:

XMLHttpRequest cannot load [redirect url]. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin [origin-url] is therefore not allowed access. 

Я понимаю, что это ошибка CORS и может быть решена путем внедрения CORS, но я не понимаю, почему это может» t действует так же, как и форма.

Мой Аякса вызов:

jQuery.ajax({ 
      url: "[same url as the form]", 
      type: "post", 
      data: formData 
      }); 

прибегая к помощи я сделал только возвращает результаты, пытаясь предотвратить 303 редирект, так что кажется, нормальная реакция после редиректа.

Что мне не хватает? Должен ли я использовать CORS?

ответ

1

I get that this is a CORS error and could be solved by implementing CORS, but I don't understand why it can't function the same way as the form.

Использование обычной формы не дает результирующим данным JavaScript, работающим на другом сайте.

Политика одного и того же происхождения защищает данные (которые могут быть частными между пользователем и другим сайтом).

CORS позволяет другому сайту заявить, что данные не нуждаются в уровне защиты по умолчанию и позволяют другим сайтам обращаться к нему.

Am I stuck having to implement CORS?

CORS - это стандартный подход к проблеме.

JSONP - это хак, который выполняет ту же работу.

Прокси-сервер - это возможная работа.


Если вы не хотите читать ответ в своем JS, просто используйте форму. Вы можете отправить его на скрытый iframe, если вы не хотите, чтобы результаты были видимыми для конечного пользователя.