Безопасность Javascript останавливает меня? - PullRequest
0 голосов
/ 21 октября 2011

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

У меня есть сценарий для вставки электронной почты пользователя вконтактная БД моего клиента и она бомбит в IE, но работает в FF, Chrome (как обычно).Просто интересно, могу ли я добавить сервер в траст или что-то, чтобы он заработал?

<script type="text/javascript">

    window.onload = init;

    //Global XMLHTTP Request object
    var XmlHttp;
    function CreateXmlHttp() {
        //Creating object of XMLHTTP in IE
        try {
            XmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            try {
                XmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (ex) {
                XmlHttp = null;
            }
        }
        //Creating object of XMLHTTP in Mozilla and Safari
        if (!XmlHttp && typeof XMLHttpRequest != "undefined") {
            XmlHttp = new XMLHttpRequest();
        }
    }

    function init() {
        var x = document.getElementsByName("btnContinue");
        x[0].onclick = submitForm;
    }

    function submitForm() {
        var x = document.getElementsByName('Email');
        if (x[0].value.length > 0) {
            CreateXmlHttp();
            XmlHttp.open("POST", "https://app.icontact.com/icp/signup.php", false);
            XmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            XmlHttp.send("redirect='http://www.xyz.com/articles.asp?ID=97'&errorredirect='http://www.xyz.com/articles.asp?ID=256'&fields_email=" +
                x[0].value + "&listid=123&specialid:123=YP7I&clientid=123&formid=123&reallistid=1&doubleopt=0&Submit=Submit");
        }
    }

</script>

Буду признателен за любую информацию.

Спасибо!

Ответы [ 3 ]

0 голосов
/ 21 октября 2011

Это вопрос политики того же происхождения. Заголовки содержимого разрешенного доступа могут быть установлены, но IE ActiveXObject не будет их использовать. XMLHttpRequests подчиняются заголовкам и будут работать в браузерах, которые их поддерживают.

Смотрите этот вопрос: В IE отказано в доступе к AJAX?

Хотя не похоже, что они нашли решение для междоменного POST, совместимого с IE ...

Если бы вы могли прокси-сервер через свой веб-сервер (сделать POST на вашем сервере) и сделать так, чтобы сервер выполнял POST, ваша проблема была бы решена.

0 голосов
/ 21 октября 2011

В новых браузерах вы можете использовать междоменный XHR, если у вас есть специальный HTTP-заголовок на запрашиваемой странице.http://ejohn.org/blog/cross-site-xmlhttprequest/

Или вы можете использовать динамическую загрузку скрипта.

0 голосов
/ 21 октября 2011

Моим первым предложением было бы попытаться создать XMLHttpRequest до объектов ActiveX. IE7 и более поздние версии поддерживают AJAX, как и другие браузеры.

Далее, вы должны использовать относительные пути в методе open(). Хотя я думаю, что из вашего вопроса это что-то, что нужно будет запустить на любом сайте? В этом случае я бы предложил создать форму и iframe и использовать «старый» метод.

...