Chrome and --allow-file-access-from-files


Chrome and --allow-file-access-from-files

我有一个jquery/AJAX登录页面,在除Chrome以外的所有浏览器中都能完美地工作。似乎我在Chrome中遇到了一个问题,该问题涵盖了在Chrome中使用本地文件的jQuery getJSON问题-有人说这是一个错误,其他人说这是很好的安全性。我说这很令人沮丧。

我应该补充说,在实际工作的标志,它是ajax打破。一个解决方案是在启动环境中添加——allow-file-access-from-files。很好,但这如何解决使用Chrome的网站访问者的问题呢?

作为一个Chrome用户,这将是具有讽刺意味的代码来检查用户使用Chrome并说"使用其他东西"。

有没有人有关于如何可能围绕这个问题进行编码的任何想法?

下面是代码:

<>以前美元(文档)时函数(){$ (" # login_form ")。submit(函数(){//删除所有类,添加消息框类并开始褪色$(" #消息框").removeClass () .addClass(对话框)。text("检查…").fadeIn (1000);//从ajax检查用户名是否存在$ . post ("/ajaxsignin.php ",{邮件:$("#电子邮件").val(),密码:美元("#密码").val(),记住:美元(#记得).val(),兰德:math . random()},功能(数据){If (data.success)//登录信息是否正确{///////////////////////////////////////////////////////////////////////如果我在这里放一个alert(), Chrome不会看到它,但其他浏览器都能看到//////////////////////////////////////////////////////////////////////. getelementbyid("对话框")。innerHTML='登录成功';. getelementbyid (topmenutext) .style.paddingTop = ' 3 px ';. getelementbyid("topmenutext")。innerHTML="BUG报告    |退出|联系|帮助";var路径= window.location.pathname;var page = sPath.substring(sPath.lastIndexOf('/') + 1);如果"register.php"(sPage = = | | sPage = = " index . php " | | sPage = = " ") {window.location.href ="menu.php";}其他{disablePopup ();}}Else//如果登录失败{$("#msgbox").fadeTo(200,0.1,function())//开始淡出消息框{//添加消息并改变盒子的类别并开始褪色$(this).html('Login failed -也许你需要注册一个帐户').addClass('messageboxerror').fadeTo(900,1);});}}, " json ");返回错误;//不发送表单});//现在调用ajax也焦点移动$ (" # submitbtn ") .click(函数(){$ (" # login_form ") .trigger("提交");});});

这应该只有当你试图使用Chrome从本地文件系统加载文件时才会出现问题。这是因为Chrome在文件系统上有非常严格的AJAX策略。

本质上,Chrome不允许AJAX请求文件以外的html页面的文件夹。要解决这个问题,只需从web服务器提供文件。你的网站访问者可能会通过web服务器访问你的网站,所以这对他们来说应该不是问题。

不要使用这个标志。您正在打开您的机器或您的用户的机器受到攻击。而是运行本地服务器。只需打开shell/terminal/命令行,输入

即可。
cd path/to/files
python -m SimpleHTTPServer
然后将浏览器指向
http://localhost:8000

如果你发现它太慢,考虑这个解决方案