繁体   English   中英

如何在调用URL时在HTTP POST请求中发送数据?

[英]How to send data in HTTP POST request while calling a url?

我写了一个简单的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内容,该内容在object标记内具有src URL。 这是成功的,我可以在我的部门内加载Web URL。

当我想使用HTTP POST方法发送一些数据(可能是单个变量)时,问题就来了。

有什么方法可以使用HTTP POST调用相同的URL吗?

注意:由于相同的原始策略,在这里我无法使用Jquery POST。

看看Jquery post函数: http : //api.jquery.com/jQuery.post/

另外,如果要发送一些数据以及url,也可以使用get来完成:

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

看一下这个:

如何通过JavaScript发送跨域POST请求?

尝试将外部链接或网站加载到Iframe然后尝试。

 <div>
   <iframe id="" name="" src="your external link" ></iframe>
 </div>

我不知道您是否使用php,因为没有php标签,但是您可以在php中使用HttpRequest类发布数据,并且它是安全的! 这是一个链接: http : //php.net/manual/en/class.httprequest.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM