Как отправить данные в HTTP-запросе POST при вызове URL?

0

Я написал простую страницу jsp, где я загружаю внешний веб-сайт внутри одного из моих разделов.

Ниже приведен код:

<html>
<head>
<script src="../common/jquery-1.6.2.min.js"></script>
<script>
  $(document).ready(function(){
       $("#menu").html('<object data="www.someurl.com">').appendTo('body');;
   });

</script>
</head>

<body>
<div id="menu" style="position:relative; bottom: 0; overflow:hidden;">
</div>
</body>

</html>

В основном, что я делаю, я устанавливаю HTML-контент, содержащий URL-адрес src внутри тега объекта. Это успешно, и я могу загрузить веб-URL внутри моего подразделения.

Вопрос приходит, когда я хочу отправить некоторые данные (может быть одной переменной), используя метод HTTP POST.

Есть ли способ вызвать тот же URL-адрес с помощью HTTP POST?

Примечание. Здесь я не могу использовать JQuery POST из-за той же политики происхождения.

Теги:
http

3 ответа

0

Попробуйте загрузить внешнюю ссылку или веб-сайт в Iframe и попробуйте.

 <div>
   <iframe id="" name="" src="your external link" ></iframe>
 </div>
  • 0
    Есть ли другой способ ? IFrame нельзя использовать из-за проблем безопасности.
0

Я не знаю, используете ли вы php, из-за тега no php, но вы можете отправлять данные с использованием класса HttpRequest в php, и он защищен! здесь ссылка: http://php.net/manual/en/class.httprequest.php

0

Взгляните на функцию почты JQuery: http://api.jquery.com/jQuery.post/

Кроме того, если вы хотите отправить некоторые данные вместе с URL-адресом, вы можете сделать это и с вашим получателем:

www.someurl.com?dataAttr=someValue&dataOtherAttr=someOtherDataValue

Это будет эквивалент GET сообщения со следующими данными:

{ 
  "dataAttr": "someValue",
  "dataOtherAttr": "someOtherDataValue"
}

Вот чистый js, который сделает сообщение на сервере. Сценарий создает невидимый iframe и делает вызов на указанном сервере с указанными параметрами. Сервер должен поддерживать политику кросс-домена. Если вы не можете заставить сервер поддерживать CORS, вам не повезло:

    /**
     * 
     * Makes a post to the specified url with the specified param - keyval
     */
    makePost  = function makePost(url, params){
      var iframeId = 'iframeid';
        var addParamsToForm = function (form, params){
            var addParamToForm = function(form, paramName, paramValue){
                var input = document.createElement('input');
                input.hidden = 'hidden';
                input.name = paramName;
                input.value = paramValue;
                form.appendChild(input);
            }
            for ( var prop in params ){
                if ( params.hasOwnProperty(prop) ){
                    if ( params[prop] instanceof Array ){
                        for ( var i = 0; i < params[prop].length; i ++ ){
                            addParamToForm(form, prop, params[prop][i]);
                        }
                    } else {
                        addParamToForm(form, prop, params[prop]);
                    }
                }
            }
        };
        var iframe = document.getElementById(iframeId);
        if ( iframe === null ){
            iframe = document.createElement('iframe');
            iframe.name = 'iframeName';
            iframe.id = iframeId;
            iframe.setAttribute("style", "width: 0; height: 0; border: none; display: none;");
        }
        var form = document.createElement('form');
        form.action = url;
        form.method = 'POST';
        form.target = iframe.name;

        addParamsToForm(form, params);

        iframe.appendChild(form);
        document.getElementsByTagName('body')[0].appendChild(iframe);
        form.submit();
    }

пример использования:

makePost('yourserver', {'someAttr':'someAttrValue', 'someOtherAttr': 'someOtherAttrValue'});

Или вариант jquery:

$.ajax({
    type: 'POST',
    url: 'yourserver',
    crossDomain: true,
    data: {'someAttr':'someAttrValue', 'someOtherAttr': 'someOtherAttrValue'},
    dataType: 'json',
    success: function(responseData, textStatus, jqXHR) {
        var value = responseData.someKey;
    },
    error: function (responseData, textStatus, errorThrown) {
        alert('POST failed.');
    }
});

О том, как настроить сервер для поддержки CORS:

http://enable-cors.org/server.html

Взгляните на это:

Как отправить запрос на междоменный POST через JavaScript?

  • 0
    JQuery POST не будет работать в кросс-домене. Здесь происхождение отличается от домена вызываемого URL.
  • 0
    Мне нужно решение для HTTP POST. Получить легко и это мы уже знаем.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню