“访问被拒绝。”使用 JQuery .ajaxForm() 在 IE8 上出错

发布于 2024-10-15 00:35:50 字数 1775 浏览 9 评论 0原文

大家好,

我是 AJAX 新手,我遇到了同源策略的问题使用 JQuery 1.4.4 和 jquery.form.js AJAX 插件进行保护。

我有一个 AJAX 联系表单,只要访问者在 URL 前面输入“www”,该表单就可以正常工作。但是,如果他们导航到我的网站(不使用 www),URL 仍然可以正常解析,但 URL 与我在 AJAX 表单中使用的内容不匹配。在 Chrome 中,这会导致控制台错误:

“XMLHttpRequest 无法加载 http://www.example.com/ . Access-Control-Allow-Origin 不允许来源 http://example.com。”

在 IE8 上我得到“访问被拒绝”。因此,即使 URL 解析正确(无论是否带有“www”),如果访问者不以“www”开头,我的 AJAX 表单也将无法工作。如果我更改 AJAX 表单代码以发布到 http://example.com (不带“www”),那么它不会如果访问者导航到 www.example.com,则不起作用。我想不出如何让我的代码处理这两种情况。这几乎是每个使用 AJAX 的人都会遇到的问题,无论是否使用 JQuery。所以我一定错过了一些明显的东西。有人可以教我这个吗?我的测试代码如下。

谢谢,

诺斯克

<!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>

Greetings all,

I'm an AJAX newbie, and I'm having a problem with same origin policy protection using JQuery 1.4.4 and the jquery.form.js AJAX plug-in.

I have an AJAX contact form which works fine so long as visitors preface URL's they type in with "www". But if they navigate to my site (not using www), the URL still resolves OK but the URL doesn't match what I use in my AJAX form. In Chrome, this results in a console error:

"XMLHttpRequest cannot load http://www.example.com/. Origin http://example.com is not allowed by Access-Control-Allow-Origin."

And on IE8 I get "Access is denied". So even though the URL's resolve OK with or without "www", my AJAX form won't work if the visitor doesn't preface with "www". If I change my AJAX form code to post to http://example.com (without "www") then it won't work if visitors navigate to www.example.com. I can't think of how to make my code handle either condition. This has got to be an issue that nearly everyone would run into who is using AJAX, regardless of using JQuery. So I must be missing something obvious. Can someone please educate me on this? My test code is below.

Thanks,

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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧街凉风 2024-10-22 00:35:50

域 www.xyz.com 和域 xyz.com 不同,因此如果您在 Javascript 文件中硬编码了网址,则会收到此错误。

简短的答案是不要使用相对 url 而不是完整 url。你没有显示实际的网址,所以我不能给你一个例子,但可以说域名是
http://www.xyz.com
并且您需要将表单发布到网址
http://www.xyz.com/admin/form/

在你的javaScript中你的url会用的是
/admin/form

这样,无论您的访问者使用什么 URL 来访问您的网站,它都会起作用,并且不会导致跨域脚本错误。

当然,如果您的网站是公开的,您可能应该(永久)将您的 xyz.com 网站重定向到 www.xyz.com 网站。因为谷歌和其他搜索引擎认为这两个是不同的域,并且您的页面排名将跨这两个域划分。

The domain www.xyz.com and the domain xyz.com are not the same so you'll get this error if you've hardcoded urls in your Javascript files.

The short answer is ot use relative urls rather than full urls. You don't show actual urls so I can't give you an exmaple in your case but lets say the the domain was
http://www.xyz.com
and you need to post the form to the url
http://www.xyz.com/admin/form/

In your javaScript the url you'd use is
/admin/form

That way no matter what url your visitor uses to get to your site it will work and it won't result in a cross domain scripting error.

Of course if your site is public you should probably (permanently) redirect your xyz.com site to the www.xyz.com site. Because Google and other search engines consider these two to be different domains and your page ranks will be divided across the two domains.

桃扇骨 2024-10-22 00:35:50

尝试使用 url 的相对路径 url: '/',

try using relative path for url url: '/',

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文