2

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

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

它适用于所有浏览器,除了 IE 浏览器。对于 IE,我为第一个服务器 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 请求?

4

1 回答 1

0

我遇到了类似的问题。事实证明,对于 IE8/IE9,XDocumentRequest 没有在请求上设置 Content-Type 标头。它默认为text/plain.

除非 Content-Type 设置为 ,否则 Spring MVC 等服务器框架不会绑定表单参数application/x-www-form-urlencoded。所以你需要在服务器上做一些自定义的事情来绑定表单参数。

于 2013-11-08T20:01:38.683 回答