跨域jquery ajax请求与自定义标头和请求正文作为JSON字符串

时间:2013-02-26 13:49:47

标签: javascript jquery ajax preflight

我需要从其他域创建JSON ajax request。在我认为我克服了跨域问题之后,我就陷入了困境:

我需要添加自定义“myCustomHeader”标题 - 从server开始这很容易,但client ...

似乎要复杂得多

我们添加了它们

$.ajax({
    type: 'POST',
    data: put the results of your header request here,
    url: 'http://server.com/service',
    beforeSend: function (xhr) { 
        xhr.setRequestHeader('myCustomHeader', '1') 
    },
    success: function(data) {    
        alert('success.');
    }
});

这会生成一个preflight标题,其中包含我想要的标题,而不是valuesCSV),但它们不会出现在request本身的标题中(作为myCustomHeader=X)...

1 个答案:

答案 0 :(得分:1)

您可以将CORS用于此目的。

示例代码:

jQuery.support.cors = true; 

function CrosDom_ajax(url) {
        if (window.XDomainRequest
        && $.browser.msie
        && $.browser.version < 10) {
        xdr = new XDomainRequest();
        if (xdr) {
            xdr.onload = function () {
               alert(xdr.responseText);

            };
            xdr.open("get", url);
            xdr.send();
        }
        }
        else {
            $.ajax({
                url: url,
                success: function (response) {


                },
                error: function (data) {
                }
            });
         }
    }

您还需要在服务器端编写以下代码,以允许跨域访问

Response.AppendHeader("Access-Control-Allow-Origin", "*");