AJAX Возвращая JavaScript для анализа результатов в потере содержимого страницы
-
25-09-2019 - |
Вопрос
Поэтому я недавно работал в скрипте, чтобы запустить код на стороне клиента для защиты интеллектуальной собственности без вмешательства с появлением интерактивности полученной страницы. Процесс выглядит следующим образом:
- HTTP-запрос приходит, .htaccess перенаправляет (. *), Чтобы parse_request.php
- parse_request.php создает класс phpurlparser ", переменные классов которого по существу являются копиями переменных $ _Server
- phpurlparser смотрит на запрошенный путь, а иногда и хост, респортек или другую информацию на сервере, чтобы определить, как реагировать. Есть несколько возможных ответов
. Запрашиваемый объект был файл .js или .css. Передайте файл на компрессор YUI и отправьте вывод
б. Запрашиваемый объект - это изображение или приложение. Пройти файл без изменений
с. Запрашиваемый объект содержит HTML. Замените каждый символ ASCII с его 2-значным шестнадцатеричным эквивалентом и отправьте следующий JavaScript:
<script type="text/javascript">
var x="~lots of hex~";
var y="";
for(i=0; i<x.length; i+=2){
y += unescape('%'+x.substr(i,2));
}
document.write(y);
</script>
Таким образом, на веб-сайте заменяется множеством шестигранников и небольшой JavaScript для возврата Hex в оригинальную форму. У меня есть пример этой настройки на примерах.chikachu.com/Colorbox/example1 (я не кодировал Colorbox, это бесплатный инструмент jQuery, который я решил использовать, поскольку это позволило мне проверить несколько различных функций JavaScript и убедиться, что все они все работал)
Теперь для проблемы:
Как оказывается, это работает 99% времени. Но ajax заставляет его злиться. Нажав на один из примеров AJAX (под «другими типами контента») будет выглядеть так, будто он перенаправляет вас на новую страницу. В поисках адресной строки или просмотра источника страницы докажет, что вы все еще на одной странице, однако. Использование инструмента «Проверка элемента» в Chrome (или Firebug в Firefox) покажет, что содержимое веб-страницы было полностью заменено содержимым запроса AJAX.
Если я изменяю parse_request.php слегка, чтобы файл, запрошенный ajax, который будет передан через невредимый, все работает. Без проблем. Поэтому по какой-то причине мой скрипт, который заменяет строку гекса со своим значимым HTML-аналогом, перезаписывает весь сайт вместо того, чтобы красиво вставлял себя в пределахu003Cdiv> объект.
По сути, вот ожидаемый непустированный HTML:
<html>
<head>
...
</head>
<body>
<div id="colorbox">
<INSERT AJAX HERE>
</div>
...
</body>
</html>
Благодаря только AJAX запутанному, я ожидаю следующее:
<html>
<head>
...
</head>
<body>
<div id="colorbox">
<script type="text/javascript">
var x="asdfasdfasdfasdf";
var y="";
for(i=0; i<x.length; i+=2){
y += unescape('%'+x.substr(i,2));
}
document.write(y);
</script>
</div>
...
</body>
</html>
Я ожидаю, что line document.write () здесь напишет y в расположении JavaScript (в пределахu003Cdiv> ). Если я ошибаюсь, и это не так, как Document.write () работает, я все еще ожидаю, что он напишу у в конце документа. Вместо этого весь документ заменяется Y. Почему это, а что мое решение?
Решение
Попробуйте что-то вроде этого:
<html>
<head>
...
</head>
<body>
<div id="colorbox">
<div id="MYAJAXCONTENT">
</div>
<INSERT AJAX HERE>
</div>
...
</body>
</html>
<html>
<head>
...
</head>
<body>
<div id="colorbox">
<script type="text/javascript">
var x="asdfasdfasdfasdf";
var y="";
for(i=0; i<x.length; i+=2){
y += unescape('%'+x.substr(i,2));
}
document.getElementById('MYAJAXCONTENT').innerHTML = y;
// for the jQuery psychos out there
// $('#MYAJAXCONTENT').html(y);
</script>
</div>
...
</body>
</html>
Другие советы
Ответ на свой последний вопрос: звонок
Document.write ('my_precious_html_code');
будет добавлять или переопределять текст на странице в зависимости от того, когда его называли (до или после события onload). Вы не должны использовать его Любые скрипт Об этом подробнее здесь: http://javascript.crockford.com/script.html.
Общий ответ: комфортный HTML-код не имеет никакого смысла. Просто как защита изображений, отключая правую кнопку мыши в конце 2000 года. Мне потребовалось менее 3 сек, чтобы «взломать» ваш запутанный код и получите красиво отформатированный HTML. Также ваш сайт оказывается в Режим причуда Что, вероятно, что-то, что вы не хотите.