みなさん、こんにちは。
私はAJAXの初心者ですが、JQuery1.4.4とjquery.form.jsAJAXプラグインを使用した同一生成元ポリシーの保護に問題があります。
訪問者がURLの前に「www」を入力する限り正常に機能するAJAX連絡フォームがあります。しかし、(wwwを使用せずに)私のサイトに移動した場合でも、URLは正常に解決されますが、URLはAJAXフォームで使用しているものと一致しません。Chromeでは、これによりコンソールエラーが発生します。
「XMLHttpRequestはhttp://www.example.com/をロードできません。Originhttp://example.comはAccess-Control-Allow-Originで許可されていません。」
そしてIE8では「アクセスが拒否されました」と表示されます。したがって、URLは「www」の有無にかかわらず問題なく解決されますが、訪問者が「www」で始まると、私のAJAXフォームは機能しません。AJAXフォームコードを変更してhttp://example.com( "www"なし)に投稿すると、訪問者がwww.example.comに移動しても機能しません。コードにどちらの条件も処理させる方法が思いつかない。これは、JQueryを使用しているかどうかに関係なく、ほぼすべての人がAJAXを使用している人に遭遇する問題である必要があります。だから私は明らかな何かを見逃しているに違いありません。誰かがこれについて私に教えてもらえますか?私のテストコードは以下の通りです。
ありがとう、
ノースク
<!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>