setRequestHeader在使用jQuery的JSONP中不起作用

前端之家收集整理的这篇文章主要介绍了setRequestHeader在使用jQuery的JSONP中不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用jQuery Mobile,jQuery 1.7.2和PhoneGap构建iPhone应用程序

尝试使用此代码从ASP.NET RESTful Web服务获取JSONP,我需要首先进行身份验证并获取令牌,然后再将其发回.

这是我的功能

var setToken = function () {
    var serverToken = '';
    $.support.cors = true;
    jQuery('body').ajaxSend(function (evt,xhr) {
        xhr.setRequestHeader("Authorization","Basic " + $.base64.encode(username + ":" + password));
        xhr.setRequestHeader('X-Accept','application/json');
    });
    $.getJSON(url + "?jsoncallback=?",null,function (res) {
        console.log(res);
        serverToken = res.Token;
    });

    $('body').ajaxSend(function (evt,xhr,ajaxOptions) {
        xhr.setRequestHeader('NewToken',serverToken);
    });

};

我得到401(未经授权)
检查标题

Request URL:http://192.168.0.44/call/?jsoncallback=jQuery17206244203052483243499_132336710607307&_=1336742104278
    Request Method:GET
    Status Code:401 Unauthorized

    Request Headers
    Accept:*/*
    Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
    Accept-Encoding:gzip,deflate,sdch
    Accept-Language:en-US,en;q=0.8
    Connection:keep-alive
    Host:192.168.0.44
    Referer:http://localhost/myMobileApp/
    User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML,like Gecko) Chrome/18.0.1025.168 Safari/535.19
    Query String Parametersview URL encoded
    jsoncallback:jQuery17206244203052483243499_132336710607307
    _:1336710704278

    Response Headers
    Access-Control-Allow-Origin:*
    Cache-Control:private
    Content-Length:0
    Date:Fri,11 May 2012 04:31:52 GMT
    Server:Microsoft-IIS/7.5
    WWW-Authenticate:Basic
    X-AspNetMvc-Version:3.0
    X-Powered-By:ASP.NET

setRequestHeader没有添加标题.

我究竟做错了什么?

请记住,服务器端已经设置为返回JSONP,我认为我们不需要在那里进行更改,但任何想法都会有所帮助

提前致谢

解决方法

正如jfriend00所说,

A JSONP request does not use an actual ajax call where you can control the HTTP request.

但是在您的情况下 – 您尝试添加的标头是基本授权 – 您可以将其注入URL,就像您“通常”那样.因此,要使用用户“user”和密码“pass”在http://example.com进行身份验证,URL将为http://user:pass@example.com/.

猜你在找的jQuery相关文章