我有一个jquery / AJAX登录页面,可以在Chrome以外的所有浏览器中使用。我似乎已经碰到了Problems with jQuery getJSON using local files in Chrome中涉及的Chrome问题 - 有人说这是一个错误,其他人说这是一个很好的安全性。我说这很令人沮丧。
我应该补充说,登录实际上是有效的,这是AJAXiness打破了。解决方案是将 - allow-file-access-from-files 添加到启动环境中。很好,但是如何解决使用Chrome的网站访问者的问题?
作为Chrome用户,必须编写代码来检查Chrome用户并说“使用其他内容”,这具有讽刺意味。
有没有人知道如何围绕这个问题进行编码?
对于它的价值,这里是代码:
$(document).ready(function() { $("#login_form").submit(function() { //remove all the class add the messagebox classes and start fading $("#msgbox").removeClass().addClass('messagebox').text('Checking...').fadeIn(1000); //check the username exists or not from ajax $.post("/ajaxsignin.php",{email:$('#email').val(), password:$('#password').val(), remember:$('#remember').val(), rand:Math.random()} ,function(data) { if(data.success) //if correct login detail { ///////////////////////////////////////////////////////////////////// // if I put an alert() here, Chrome just doesn't see it but all other browsers do ////////////////////////////////////////////////////////////////////// document.getElementById("msgbox").innerHTML='Sign in successful'; document.getElementById("topmenutext").style.paddingTop='3px'; document.getElementById("topmenutext").innerHTML="BUG REPORT |sign out|contact|help"; var sPath = window.location.pathname; var sPage = sPath.substring(sPath.lastIndexOf('/') + 1); if(sPage == "register.php" || sPage == "index.php" || sPage == ""){ window.location.href='menu.php'; } else{ disablePopup(); } } else //if login failed { $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox { //add message and change the class of the box and start fading $(this).html('Login failed - perhaps you need to register for an account').addClass('messageboxerror').fadeTo(900,1); }); } },"json"); return false; //not to post the form physically }); //now call the ajax also focus move from $("#submitbtn").click(function() { $("#login_form").trigger('submit'); }); });
答案 0 :(得分:1)
如果您尝试使用Chrome从本地文件系统加载文件,这应该只是一个问题。这是因为Chrome在文件系统上有严格的限制性AJAX策略。
基本上,Chrome不允许对html页面文件夹之外的文件进行AJAX请求。要解决此问题,只需从Web服务器提供文件即可。您的网站访问者可能会通过网络服务器访问您的网站,所以这对他们来说应该不是问题。
答案 1 :(得分:1)
请勿使用该标志。 You're opening your machine or your users machines to attacks。而是运行本地服务器。它就像打开shell /终端/命令行并输入
一样简单cd path/to/files
python -m SimpleHTTPServer
然后将浏览器指向
http://localhost:8000
如果发现它太慢consider this solution