2012-07-25 135 views
0

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

$.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开发工具中没有看到任何错误。 任何人都可以帮助我吗?

回答

1

IE8-9应该使用XDomainRequest火跨域ajax请求和jQuery 支持它本身,我发现jQuery的bug跟踪票:http://bugs.jquery.com/ticket/8283

jQuery开发团队可以考虑XDomainRequest不能完全兼容其Ajax界面等都已经决定不支持它,但是一个插件可能会有所帮助:https://github.com/jaubourg/ajaxHooks/blob/master/src/ajax/xdr.js

记住XDR运输有一定的局限性,检查上面

+0

ESP jQuery开发票的讨论。 XDomainRequest有一些限制,因为它不支持凭据。 – albertjan 2012-07-25 06:34:29

+0

@otakustay谢谢,xdr插件适用于我的Get请求,但不是Post请求,我仍在处理它。 – 2012-07-25 06:55:05