Как отправить в другой домен и получить результат html в javascript

Браузер должен отправить запрос POST и получить страницу результатов html из javascript. В ответе сервера нет Access-Control-Allow-Origin. Невозможно изменить что-либо сервер.

Если клики для людей - это кнопка отправки, ответ возвращается правильно.

Пытаясь использовать javascript, используя:

        $.ajax('https://example.com', {
            data: 
                {
                    postkey: 'value'
                }
            method: 'POST',
            async: false
        })
            .done(function (data, textStatus, jqXHR) {
                alert(data);
            })
            .fail(function (xhr, textStatus, errorThrown) {
                alert(JSON.stringify(xhr));
            });

возвращает исключение в консоли хром:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:52216' is therefore not allowed access.

Я также попробовал jsonp

        $.ajax('https://example.com', {
            data: 
                {
                    postkey: 'value'
                }
            method: 'POST',
            dataType: 'jsonp',
            async: false
        })
            .done(function (data, textStatus, jqXHR) {
                alert(data);
            })
            .fail(function (xhr, textStatus, errorThrown) {
                alert(JSON.stringify(xhr));
            });

В этом случае тип запроса изменен на GET, и возникает ошибка stange в консоли chrome:

Uncaught SyntaxError: Unexpected token <

Инструменты разработчика Chrome показывают, что в обоих случаях сервер example.com возвращал правильный html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="et">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="content-language" content="et">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
...

Как исправить это на стороне клиента? Мне нужно подражать клику в форме submit и получить страницу результатов html.

Используются JQuery, Bootstrap 3 и пользовательский интерфейс jquery. В сервере используются Apache, Mono, mod_mono, ASP.NET MVC 4.6.

Возможно создание MVC-контроллера на сервере, который вызывает такой запрос и возвращает результат. Я ищу способ сделать это из браузера, без дополнительного вызова собственного сервера.

** Обновление **

С Как отправить запрос на междоменный запрос POST через JavaScript? jcubic answer Я нашел образец:

Есть еще один способ (с использованием функции html5). Вы можете использовать прокси iframe размещенный на этом другом домене, вы отправляете сообщение, используя postMessage, чтобы iframe, то iframe может выполнить запрос POST (в том же домене) и postMessage обратно с reposnse к родительскому окну.

parent on sender.com

var win = $('iframe')[0].contentWindow;

win.postMessage(JSON.stringify({url: "URL", data: {}}),"http://reciver.com");

function get(event) {
    if (event.origin === "http://reciver.com") {
        // event.data is response from POST
    }
}

if (window.addEventListener){
    addEventListener("message", get, false)
} else {
    attachEvent("onmessage", get)
}

iframe на reciver.com

function listener(event) {
    if (event.origin === "http://sender.com") {
        var data = JSON.parse(event.data);
        $.post(data.url, data.data, function(reponse) {
            window.parent.postMessage(reponse, "*");
        });
    }
}
// don't know if we can use jQuery here
if (window.addEventListener){
    addEventListener("message", listener, false)
} else {
    attachEvent("onmessage", listener)
}

Также это описано в http://www.ajax-cross-origin.com/how.html

Будет ли эта работа работать с текущими браузерами и будет ли она резонирующей? Есть ли какой-то общий метод или плагин, который реализует это?

Ответ 1

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

Ответ 2

Вы можете использовать AJAX и запустить завиток на стороне PHP скрипт