Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

Похоже, что это та же политика происхождения , мой друг:)

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

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

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

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

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

Access-Control-Allow-Origin: *
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top