#javascript #parsing #prototypejs #remote-access
#javascript #синтаксический анализ #prototypejs #удаленный доступ
Вопрос:
Я хочу решить эту головоломку, но файл находится на удаленном сервере. Как я могу проанализировать этот файл, потому что я продолжаю получать эту ошибку.
Не удается загрузить XMLHttpRequest http://www.weebly.com/weebly/publicBackend.php . Происхождение http://mysite.com не разрешен с помощью Access-Control-Allow-Origin. Отказано в получении небезопасного заголовка «X-JSON»
Код ниже
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<script type="text/javascript" src="prototype.js"></script>
<!-- Puzzle starts here -->
<script type='text/javascript'>
// Note: there may be some unfinished code here, that needs finishing...
// You should probably try to get this function working...
function solvePuzzle() {
new Ajax.Request('http://www.weebly.com/weebly/publicBackend.php', {
parameters:{
pos: 'solvepuzzle'
},
onSuccess:handlerSolvePuzzle,
onFailure:function() { alert('Transmission error. Please try again.'); }
});
}
function handlerSolvePuzzle(t) {
var responseText = t.responseText;
responseText = responseText.replace(/n/, "");
if (responseText.match(/!!$/)) {
alert("Oops: " responseText);
} else {
// Still need to decode the response
// Once the response is decoded, we can fire off the alert
// giving the user further instructions
//alert(responseText);
//alert('To complete the challenge, ' t.responseText);
}
}
</script>
</head>
<body>
<input type="button" onclick="solvePuzzle()" value="hello"/>
</body>
</html>
Ответ №1:
Инструменты разработчика Chrome и Firefox позволяют изменять JS на лету.
Если вы используете Chrome, откройте консоль, перейдя в меню Вид-> Разработчик-> Консоль JavaScript. Скопируйте js из источника страницы. Измените его. Затем вставьте измененные функции javascript в консоль. Нажмите enter. Затем начните вводить ‘solvePuzzle ();’ Нажмите enter. Вы увидите, что ответ возвращается.
Для Firefox вам нужно загрузить плагин Firebug.
Ответ №2:
Вы не можете сделать это из JavaScript из-за той же политики происхождения: https://developer.mozilla.org/en/Same_origin_policy_for_JavaScript . Если этот слабый сайт поддерживает какой-то JSON API, вы можете использовать JSONP: http://en.wikipedia.org/wiki/JSONP . Кроме этого, вам, вероятно, лучше взаимодействовать с этим сайтом через серверную часть из-за ограничений безопасности на стороне клиента.
Комментарии:
1. У меня нет доступа к их стороне сервера, и все, что я знаю, это то, что php-файл должен что-то возвращать. Похоже на головную боль головоломки.
Ответ №3:
Рассмотрите возможность установки HTTP-туннеля на вашем «mysite.com » чтобы браузеру не приходилось получать доступ «weebly.com » напрямую.