We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 1607
    • 72 Posts
    Подскажите, пожалуйста.

    Делаю AJAX запрос для получения содержимого документа. Документ неопубликован - чтобы его нельзя было увидеть подстановкой id в адресной строке.
    В FF все срабатывает нормально. IE и другие пишут ошибку 404 в xmlHttp.status.
    Если документ опубликован - все работает нормально.
    А надо, чтобы работало с неопубликованным.
      • 1611
      • 591 Posts
      неопубликованные документы видны только менеджеру, когда он залогинен.
      если вы не залогинены, то возвращается 404.

      Предполагаю, что в FF вы были залогинены, а в IE нет, т.к. используете его только для выборочных тестов.
        • 1607
        • 72 Posts
        Спасибо. А можно как-то решить эту проблему - чтобы работали AJAX запросы, но не были видны документы?
          • 1611
          • 591 Posts
          Честно говоря, с AJAX на modx пока не работал.
          Может быть можно сделать веб-юзера, которому разрешить доступ к этим документам (а остальным запретить), и в запросе аякса уже делать авторизацию. (Видимо, там через cookie)

          Хотя, в таком случае данные этого пользователя все равно будут в открытом источнике...

          А так ли важно закрывать эти документы?
            • 1607
            • 72 Posts
            Принципиально опубликование документов не будет влиять на работу сайта. Вопрос чисто эстетический. Если чьи-то шаловливые ручки будут пробовать в адресной строке подставлять id всех подряд документов, то будет открывать документы, которые нужны только для служебного пользования и не нужны для конечных пользователей. Так что, конечно, лучше было бы сделать, чтобы их нельзя было выводить на экран перебором id в адресной строке. Может быть это еще как-то можно сделать?
              • 1611
              • 591 Posts
              Дело в том, что тем кому надо будет докопаться до этих страниц — докопаются. Т.к. AJAX выполняется на стороне пользователя и его исходники доступны из браузера.

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

              Это можно реализовать небольшим сниппетом, который проверяет переменную, и если ее нет, то заканчивает обработку страницы, а этот сниппет вызывайте в начале всех ваших служебных страниц.

              Но тем не менее, тот, кто будет копать ваши исходники, увидит какую переменную нужно передать, и сможет запросить эти страницы.
                • 1607
                • 72 Posts
                Спасибо. Попробую.
                Я понимаю, что если приедут на танке, то даже бетонный забор не поможет.
                Это небольшое затруднение для начинающих шалунов. Понятно, что общедоступная система всегда подвергается риску быть взломанной. А это вроде как железная входная дверь - создается иллюзия защиты и не каждый проходящий захочет в нее биться. Хотя профессионал вскроет эту дверь за минуту.
                Еще раз спасибо за советы.
                  • 1611
                  • 591 Posts
                  Всегда пожалуйста. Обращайтесь! smiley