2011-01-29 10 views
3

挨拶すべて、"アクセスが拒否されました。" jQueryの.ajaxFormを使用してIE8のエラー()

私はAJAXの初心者だし、私はjQueryの1.4.4を使用してsame origin policy保護に問題があるとjquery.form.js AJAXプラグインしていますに。

私はAJAXの連絡先フォームを持っています。訪問者が「www」と入力する前に訪問者が書いている限り、正常に動作します。しかし、私のサイト(wwwを使用していない)に移動すると、URLは引き続きOKを解決しますが、URLは私のAJAXフォームで使用するものと一致しません。 Chromeでは、コンソールエラーが発生します。

"XMLHttpRequestはhttp://www.example.com/をロードできません。http://example.comはAccess-Control-Allow-Originによって許可されていません。

IE8では「アクセスが拒否されました」と表示されます。だから、URLが "www"の有無にかかわらず解決するにもかかわらず、私のAJAXフォームは、訪問者が "www"で始まらなければ動作しません。 http://example.com(「www」なし)に投稿するようにAJAXフォームコードを変更した場合、訪問者がwww.example.comにナビゲートすると機能しません。どのように私のコードをどちらの条件にも対応させる方法について考えることはできません。これは、JQueryを使用するかどうかにかかわらず、誰もがAJAXを使用している人に遭遇するという問題でなければなりません。だから私は明らかな何かを見逃すはずです。誰かが私にこのことを教えてもらえますか?私のテストコードは以下の通りです。

おかげで、

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> 
+0

私はブラウザがwwwを別のドメインとして扱っているため、クロスドメイン要求が推奨されているように相対パスを使ってみることはできません。他のオプションはJavaScriptを使用してベースURLを取得し、Ajaxリクエストを設定します。 – Luis

答えて

2

ドメインwww.xyz.comとドメインxyz.comのための相対パスを使用してみてくださいので、同じではありませんJavascriptファイルにURLをハードコードしている場合は、このエラーが発生します。

短い答えは、完全なURLではなく相対URLを使用することです。私はあなたのケースであなたにexmapleを与えるが、ドメインが http://www.xyz.com だったと言うことができますすることはできませんので、あなたは、実際のURLが表示されないと、あなたのJavaScript URL内のURLに http://www.xyz.com/admin/form/

をフォームをポストする必要があります /admin/form

あなたの訪問者があなたのサイトにアクセスするために使用するURLに関係なく、それは機能し、クロスドメインスクリプティングエラーにはなりません。

もちろん、あなたのサイトが公開されている場合は、xyz.comサイトをwww.xyz.comサイトに(永久に)リダイレクトする必要があります。 Googleと他の検索エンジンはこれらの2つを異なるドメインとみなし、ページランクは2つのドメインに分割されるためです。

+0

Shiv、私はあなたの提案に従って.htaccessでリダイレクトを設定したので、www.example.comとexample.com(wwwはありません) www.example.com。それは素晴らしい作品です!ご協力いただきありがとうございます。 –

+0

@NorthK、助けになるのはうれしい!あなたはまだ練習として相対URLを使用する必要があります。これは「ベストプラクティス」とみなされ、将来的に物事を変更する必要がある場合や、別のドメインなどで同じコードが使用されている場合には、移行が容易になります –

0

あなたはよURL url: '/',

関連する問題