AJAX请求中没有'Access-Control-Allow-Origin'标头出现错误

时间:2015-05-21 05:50:45

标签: javascript jquery ajax api rest

  $.ajax({
            url: 'http://test.aegi.com/rest/social/update/@ViewBag.orgId?access_token=6fWV564u7rATh8=',
            type: 'POST',
            contentType: 'application/json',
            data: [{
                "message": "It's party time",
                "messageType": "NEW",
                "gmtTimeDate": "2014-12-21 23:59:59",
                "soAccts": [{
                    "accountId": "74470431",
                    "soAccountType": "FBPAGE"
                }]
            }],

            success: function (data) {
                console.log(data);
            },
            error: function (error) {
                console.log(error);
            }

        });

当我尝试发送此请求时AJAX我收到错误:No 'Access-Control-Allow-Origin' header is present
但是在dhc chrome扩展中,当我将相同的上述数据放入正文部分时发送请求然后我得到一个成功的回应。我在这里做错了吗?

3 个答案:

答案 0 :(得分:1)

现代浏览器禁止跨源请求,因此他们需要“访问控制 - 允许 - 来源”#39;响应标头存在,如果没有,则会收到该错误。

虽然像邮递员那样的Chrome扩展规避了这个限制。

如果您有权访问服务器,那么您应该添加“访问控制 - 允许 - 来源”和“#39;进入响应头或使用jsonp。

检查CORS以获取更多信息。

答案 1 :(得分:0)

尝试添加标题:

headers: { 'Access-Control-Allow-Origin', '*' }
* in above line will allow access to all domains.

headers: { 'Access-Control-Allow-Origin', 'http://www.example.com' }
For allowing access to specific domain only.

编辑回答:

beforeSend: function(xhr) {
    xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
}

答案 2 :(得分:0)

你可以使用json dataType:" jsonp"在你的ajax请求中