Ajax дает ошибку Acess Denied - PullRequest
       3

Ajax дает ошибку Acess Denied

0 голосов
/ 28 января 2012

Я пытаюсь AJAX запросить к 192.158.110.129:5000 (Flask Webserver), в то время как весь сайт обслуживается 192.168.110.129:8080(Apache). Я получаю сообщение об отказе в доступе во всех браузерах. Как я могу решить это? Мне нужно понять, что происходит, чтобы я мог это исправить. document.domain = "192.168.110.129" в Firefox. Я думаю, что это какая-то мера безопасности внедрения межсайтовых скриптов, но кто-нибудь может уточнить?

Не так много кода, который я могу показать для этого, поскольку я использую API. Это что-то вроде этого. У меня есть HTML с textarea, который загружается с помощью скрипта CKEDITOR. Я получаю доступ к этому через APACHE. Теперь для проверки орфографии я изменил их плагин и отправляю запрос на флэш-веб-сервер.

request = "192.158.110.129:5000?data=data"
var data=CKEDITOR.ajax.load(request);

Это не проходит.

Итак, файл подается через Apache и Ajaxing на флеш-сервер для действий Python. Кто-то предположил, что «Прокси» или JSONP будут хорошими решениями. В любом месте, где я могу прочитать об этом ?

Ответы [ 2 ]

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

XHR-запросы ограничены Политика одного и того же происхождения , которая разрешает только запросы в пределах одного источника из соображений безопасности. Таким образом, 192.168.110.129 разрешено отправлять запросы XHR только на 192.168.110.129, но не на 192.158.110.129.

Изменение document.domain здесь не поможет. Кроме того, вам разрешено использовать только соответствующий (супер) домен, такой как foo.example.com и bar.example.com может согласовать example.com, это только для доступа DOM, а не XHR-запросов.

Расширением XHR является Обмен ресурсами между источниками , который разрешает запросы между источниками при определенных условиях. Одним из условий является то, что принимающий сайт авторизует запросы от сайта сценариев. Это делается с помощью поля заголовка ответа Access-Control-Allow-Origin . Он может содержать список разрешенных источников или * в качестве подстановочного знака.

Поэтому попробуйте отправить Access-Control-Allow-Origin: * на ваш компьютер 192.158.110.129.

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

Правильно, большинство браузеров не разрешают XSS. У вас есть два варианта.

  1. Какую бы службу вы ни обслуживали в 192. 158 .110.129, переместите ее в 192. 168 .110.129, чтобы XSS
  2. Создайте прокси-скрипт на стороне сервера .php (или аналогичный) на 192. 158 .110.129. Этот серверный сценарий не имеет ограничений XSS и может извлекать ресурсы из 192. 168 .110.129, а затем AJAX может динамически получать доступ из 192. 158 .110.129.

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

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