Возможно ли проанализировать удаленный файл с помощью прототипа ajax / javascript

#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 » напрямую.