【问题标题】:how to solve cross domain in ajax [duplicate]如何在ajax中解决跨域[重复]
【发布时间】:2015-01-01 08:12:40
【问题描述】:

我想解决我的 AJAX 跨域问题。这是我在 Chrome 中收到的错误消息:

XMLHttpRequest 无法加载 http://'myaddress'/TEST/user/login/testuserid 。 Access-Control-Allow-Headers 不允许请求标头字段 Access-Control-Allow-Origin。

这是我的源代码

$.ajax({
    crossDomain : true,
    dataType : "json",
    url: fullUrl,
    method: method,
    headers:headers,
    data: body,
    success: function(data, state, res){
        if (data == null)
            data = '';

        console.log( '[[[[[[[[SUCCESS!!]]]]]]]   url: ' + url + ',   state:' + state + ',   data : ' + JSON.stringify( data ) );
        callback(data, state, res);
    },
    error: function(data, state){
        if ( data == null )
            data = '';

        console.log( '[[[[[[[[[ERROR!!]]]]]]]]]   url: ' + url + ', s  tate:' + state + ',   data : ' + JSON.stringify( data ) );
        callback(data, state, null);
    }
});

跨域的Servlet代码

httpRes.setHeader("Access-Control-Allow-Origin", "*");
httpRes.setHeader("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE");
httpRes.setHeader("Access-Control-Allow-Headers", "*"); 

【问题讨论】:

  • 您是否检查过浏览器中的响应以查看是否实际设置了标头?
  • 你试过httpRes.setHeader("Access-Control-Allow-Headers", "x-requested-with");吗?

标签: javascript jquery ajax


【解决方案1】:

您需要使用JSONP 来制作CROSS DOMAIN Requests

请阅读:

Loading cross domain endpoint with jQuery AJAX

Make cross-domain ajax JSONP request with jQuery

【讨论】:

  • JSONP 不是一个明确的要求。这只是一种选择。