"В доступе отказано." ошибка в IE8 при использовании JQuery .ajaxForm () - PullRequest
3 голосов
/ 29 января 2011

Приветствую всех,

Я новичок в AJAX, и у меня возникла проблема с одинаковой политикой происхождения защита с использованием JQuery 1.4.4 и jquery.form.js AJAXПлагин.

У меня есть контактная форма AJAX, которая прекрасно работает, если посетители вводят URL-адреса, введенные с помощью "www".Но если они переходят на мой сайт (не используя www), URL все равно разрешается, но URL не совпадает с тем, что я использую в своей форме AJAX.В Chrome это приводит к ошибке консоли:

"XMLHttpRequest не может загрузить http://www.example.com/. Origin http://example.com не разрешен Access-Control-Allow-Origin."

И на IE8 я получаю "Доступ запрещен".Таким образом, несмотря на то, что URL-адрес разрешен в порядке с или без "www", моя форма AJAX не будет работать, если посетитель не введет предисловие с "www".Если я изменю свой код формы AJAX на «http://example.com» (без «www»), он не будет работать, если посетители перейдут на сайт www.example.com.Я не могу думать о том, как заставить мой код обрабатывать любое условие.Это должно быть проблемой, с которой сталкиваются почти все, кто использует AJAX, независимо от использования JQuery.Поэтому я, должно быть, упускаю что-то очевидное.Может кто-нибудь рассказать мне об этом?Мой тестовый код ниже.

Спасибо,

Northk

<!DOCTYPE html> 
<html>
<head> 
<meta charset="utf-8"> 
<title>ajaxForm Error Test</title> 
<script src="http://www.example.com/js/jquery-1.4.4.min.js"></script> 
<script src="http://www.example.com/js/jquery.form.js"></script>    
</head> 
<body>
<form id="contact-form" method="post" action="http://this-url-wont-be-used.com/">
<a href="#" id="contact-button">SEND</a>
</form>
<script>
//
// hook up the form to ajax
//
$('#contact-form').ajaxForm({
    url: 'http://www.example.com/', // forcing the URL doesn't seem to help!
    success: function(data) {
        alert(data);
    },
    dataType: 'html'
});
//
// make the SEND link behave as if it's a submit button
//
$('#contact-button').click(function(e) {
  $('#contact-form').submit();
});
</script>
</body>
</html>

Ответы [ 2 ]

2 голосов
/ 29 января 2011

Домен www.xyz.com и домен xyz.com не совпадают, поэтому вы получите эту ошибку, если у вас есть жестко запрограммированные ссылки в ваших файлах Javascript.

Краткий ответ: не используйте относительные URL-адреса, а не полные. Вы не показываете реальные URL, поэтому я не могу дать вам пример в вашем случае, но допустим, домен был http://www.xyz.com и вам нужно разместить форму на URL http://www.xyz.com/admin/form/

В вашем javaScript URL, который вы будете использовать, / Администратор / форма

Таким образом, независимо от того, какой URL использует ваш посетитель для перехода на ваш сайт, он будет работать и не приведет к ошибке междоменного скриптинга.

Конечно, если ваш сайт общедоступен, вы, вероятно, должны (навсегда) перенаправить свой сайт xyz.com на сайт www.xyz.com. Поскольку Google и другие поисковые системы считают, что эти два домена являются разными доменами, рейтинги ваших страниц будут разделены на два домена.

0 голосов
/ 29 января 2011

попробуйте использовать относительный путь для URL url: '/',

...