Chrome и --allow-file-access-from-files - PullRequest
       1

Chrome и --allow-file-access-from-files

1 голос
/ 19 декабря 2011

У меня есть страница входа в JQuery / AJAX, которая отлично работает во всех браузерах, кроме Chrome.Кажется, я столкнулся с проблемой в Chrome, которая была рассмотрена на Проблемы с jQuery getJSON при использовании локальных файлов в 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');
    });
});

Ответы [ 2 ]

1 голос
/ 03 февраля 2014

Не используйте этот флаг. Вы открываете свой компьютер или компьютеры пользователей для атак . Вместо этого запустите локальный сервер. Это так же просто, как открыть оболочку / терминал / командную строку и набрать

cd path/to/files
python -m SimpleHTTPServer

Затем укажите браузер на

http://localhost:8000

Если вы обнаружите, что это слишком медленно рассмотрите это решение

1 голос
/ 21 января 2012

Это может стать проблемой только в том случае, если вы пытаетесь использовать Chrome для загрузки файлов из локальной файловой системы. Это связано с тем, что в файловой системе Chrome существуют безумно ограничительные политики AJAX.

По сути, Chrome не разрешает запросы AJAX к файлам вне папки html-страницы. Чтобы это исправить, просто обслуживайте свои файлы с веб-сервера. Посетители вашего сайта в любом случае, вероятно, получат доступ к вашему сайту через веб-сервер, так что это не должно стать для них проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...