Spring MVC在IE浏览器中解析POST跨域请求丢失参数

时间:2013-03-28 10:46:46

标签: spring-mvc cors

我在不同的域上有两个应用程序: foo.bar.com bar.com 我尝试将第一个域的请求发送到第二个域。为此,我在第二个域中添加了一个过滤器到web.xml:

<filter>
   <filter-name>CORS</filter-name>
   <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
</filter>

除IE浏览器外,它适用于所有浏览器。 对于IE,我为firt服务器ob JS添加了特殊条件:

if ($.browser.msie && window.XDomainRequest) {
            var xdr = new XDomainRequest();
            xdr.open("POST", "http://bar.com/user/login");
            var loginParam = get param here;
            var passParam = get param here;
            xdr.send("login=" + loginParam + "&password=" + passParam);
            xdr.onerror = function () {
                alert('in error');
            };
            xdr.onload = function () {
                alert(xdr.responseText);
            }
        } else {
            //Simple AJAX request
        }
    });

在此之后,我在服务器过滤器上收到了请求! 但是我没有参数:登录密码他们错过了。 在这种情况下我该怎么办?如何在IE中执行跨域POST请求?

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题。事实证明,对于IE8 / IE9,请求上的XDocumentRequest does not set the Content-Type header。它默认为text/plain

除非Content-Type设置为application/x-www-form-urlencoded,否则Spring MVC等服务器框架不会绑定表单参数。因此,您需要在服务器上执行自定义操作以绑定表单参数。