0

我目前正在处理一些需要发送跨域 ajax 请求的东西。我正在使用 jQuery 1.7.2 和 Resteasy。这是我的ajax请求:

 $.ajax({
    url: Configuration.AjaxUrlPrefix + "/rest/conf/saveoption",
    data: {
        save_option: JSON.stringify(optionData)
    },
    type: "POST",
    dataType: 'text',
    success: success,
    error: fail,
    cache: false
});

我使用拦截器向我的其余响应添加一些标头:

@Provider
@ServerInterceptor
public class CrossDomainInteceptor implements PostProcessInterceptor
{

    @Override
    public void postProcess(ServerResponse response)
    {
        MultivaluedMap<String, Object> metadata = response.getMetadata();
        metadata.add("Access-Control-Allow-Origin", "*");
        metadata.add("Access-Control-Allow-Methods", "*");
        metadata.add("Access-Control-Max-Age", "*");
        metadata.add("Access-Control-Allow-Headers", "*");
    }

}

它适用于 Chrome 和 FF,但不适用于 IE8 和 IE9。而且我在 IE 开发人员工具中没有看到任何错误。有人可以帮我吗?

4

1 回答 1

1

IE8-9 应该XDomainRequest用来触发跨域 ajax 请求,而 jQuery本身不支持它,我在 jQuery 错误跟踪器上找到了一张票:http: //bugs.jquery.com/ticket/8283

jQuery 团队可能认为XDomainRequest与其 ajax 接口不完全兼容,因此决定不支持它,但是插件可能会有所帮助:https ://github.com/jaubourg/ajaxHooks/blob/master/src/ajax/xdr.js

请记住 xdr 传输有一些限制,请查看上面 jQuery 票证的讨论

于 2012-07-25T06:31:39.110 回答