Кодирование с помощью XMLHttpRequest для расширения Safari - PullRequest
1 голос
/ 12 августа 2011

В своем расширении я создаю Уровень доступа как «Все», а также добавляю белые списки как http://*/* для каждого домена.

И у меня есть следующий код в моем файле JS (который запускается как скрипт завершения):

var feedbackmsg = "message goes here";  
var xmlhttp = new XMLHttpRequest();

xmlhttp.open('POST', 'http://mysitename.com/feedback.php', true);
xmlhttp.onreadystatechange = handleServerResponse;
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send("html=" + feedbackmsg);

function handleServerResponse() {    
    if (xmlhttp.readyState == 4) {
        alert(xmlhttp.getAllResponseHeaders());
        if (xmlhttp.status == 200) {
            alert("send");
        } else {
            alert("error");
        }
    } 
}

Всякий раз, когда я запускаю его, я не получаю ответ заголовка в окне предупреждения, а также сообщение об ошибке. Как я могу решить проблему?

1 Ответ

2 голосов
/ 13 августа 2011

Является ли это расширением, XMLHttpRequest (если внедрен в страницу), я думаю, не имеет доступа к чему-либо за пределами текущего домена страницы. Консоль просто говорит, что запрос был отменен. По крайней мере, так было для меня, когда я проверял это только сейчас. (У меня не было URL-адресов в белом или черном списке при тестировании, но для параметра Доступ было установлено значение «все».)

Вы можете попробовать зайти в тот же домен, что и тот, который вы хотите "вызвать" с помощью объекта XHR в вашем коде, и посмотреть, удастся ли это тогда. Если это произойдет, вы поймете, что это потому, что домен страницы и запрос XHR должны совпадать.

Однако, похоже, вы можете сделать межсайтовый Ajax-запрос с глобальной страницы расширения (как ни странно). По крайней мере, мне показалось, что сейчас это работает. Это на самом деле немного страшно (я бы предпочел, чтобы было больше трудно вызвать случайный сервер из расширения), но это сработало.

Не знаю, поможет ли это вам, хотя.

...