Ajax и ограниченный uri

Я хотел бы сделать ajax-вызов на другой сервер (тот же домен и ящик, только другой порт). например.

Моя страница

http://localhost/index.html

Я хотел бы сделать запрос на получение ajax:

http://localhost:7076/?word=foo

Я получаю эту ошибку:

Access to restricted URI denied (NS_ERROR_DOM_BAD_URI) 

Я знаю, что вы не можете сделать ajax-запрос на другой домен, но, кажется, это также включает разные порты? есть ли обходные пути?


person mmattax    schedule 11.09.2008    source источник


Ответы (4)


У определенной страницы на вашем порту 80 сервер прокси-запросов на другой порт. Например:

http://localhost/proxy?port=7076&url=%2f%3fword%3dfoo

Обратите внимание на кодировку URL в последнем значении аргумента строки запроса.

person Joseph Bui    schedule 11.09.2008

Вы можете использовать JSONP. Здесь вы указываете обратный вызов с запросом, ответ на ваш запрос ajax оборачивается именем функции обратного вызова. Вместо использования XmlHttpRequest вы вставляете тег в HTML-документ с URL-адресом. Затем, когда ответ получен, вызывается функция обратного вызова, передавая данные в качестве параметра.

Посмотрите этот сообщение в блоге в качестве примера.

person Luke Smith    schedule 11.09.2008

Это ограничение браузера. Все вызовы javascript должны быть на тот же сервер и порт, где находится сценарий. Для этого потребуется что-то на стороне сервера. т.е. пусть процесс в localhost перенаправит запрос в localhost:7076.

person sblundy    schedule 11.09.2008

Это отстой, но это необходимо... По сути, вам нужно будет проксировать ваш AJAX-запрос через локальный прокси-сервер - какой-нибудь серверный скрипт/страницу/что угодно в том же домене, в котором вы находитесь, - получить вызов и перенаправьте его на другую ресурсную серверную сторону. Могут быть некоторые трюки с IFRAME, которые вы могли бы использовать, но я не думаю, что они работают очень хорошо ... хотя это может быть ошибкой, это было некоторое время.

person matt    schedule 11.09.2008