Как указать внешний сайт для XMLHTTPRequest - PullRequest
4 голосов
/ 04 мая 2009

При использовании XMLHTTPRequest в javascript я хочу отправить его на внешний веб-сайт, а не на тот, где размещен файл .js. Чтобы отправить его в test.php на текущем сервере, я бы использовал

request.open("POST", "test.php", true);

но для второго аргумента, как я могу отправить его на другой сайт. «example.com/test.php» ищет файл на текущем сервере, а «http://example.com/test.php" просто кажется, что произошел сбой.

Ответы [ 5 ]

7 голосов
/ 04 мая 2009

Вы не можете по соображениям безопасности. См. та же политика происхождения для JavaScript.

Существуют некоторые обходные пути, в которых используются ошибки браузера или угловые случаи, но их использование не рекомендуется.

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

6 голосов
/ 04 мая 2009

Это звучит как плохой случай Одинаковая политика происхождения , мой друг :)

1 голос
/ 04 апреля 2012

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

Access-Control-Allow-Origin: *
1 голос
/ 04 мая 2009

Действительно, вы можете. Хотя не в любом браузере.

В Internet Explorer 8.0 есть XDomainRequest , объект, разрешающий междоменные запросы. Вам нужно было бы правильно обработать запрос, сделанный с этим объектом на сервере, отправив сначала заголовок Access-Control-Allow-Origin с "*" или именем домена запрашивающей стороны.

Так как вы все равно делаете какие-то хакерские вещи, почему бы не попробовать сначала использовать его в IE8?

1 голос
/ 04 мая 2009

Вы не можете (по большей части) использовать XmlHttpRequest для получения данных с внешнего веб-сайта. Однако вы можете динамически создавать тег SCRIPT и ссылаться на внешний адрес. jQuery функционально оборачивает это как часть обработки ajax.

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