ajax和请求cookie简单总结

jQuery的ajax总结:

代码:

$.ajax({
            type: "post", //区分请求是get还是post
            url: '/port/FaceDynamicServer/sync/search/searchaccesslog', //请求地址
            async: false, //区分同步异步请求 默认true异步请求,等于false同步请求
            data: JSON.stringify({ //post请求参数 在要求contentType: "application/json"的时候需要将其转换成字符串,否则有无法识别
                arrCameraId: [],
                arrEyeGlasses: [],
                arrGender: [],
                arrMask: [],
                cardId: "",
                choiceId: "",
            }),
            xhrFields: { withCredentials: true },//设置XHR对象。例如,如果需要的话,你可以用它来设置withCredentials为true的跨域请求。
            headers: { //设置请求头 请求头无法对cookie等浏览器信息进行设置,因为浏览器限制,浏览器会默认将cookie信息带到请求
                AuthCacheKey: "27f661a9704748a4af41af0eccc978ea&&fds_11.20.0.229_10016" //请求头
            },
            contentType: "application/json ;charset=utf-8", //设置请求的编码格式
            success: function (data) { //成功的返回
                console.log(data)
            }
        });

    

其余参数解释:

cache:(默认: true,dataType为script和jsonp时默认为false) jQuery 1.2 新功能,设置为 false 将不缓存此页面。

completa:是一个函数,ajax请求完成后调用次方法,(无论请求失败还是成功)

context:设置请求的this上下文。

$.ajax({ url: "test.html", context: document.body, success: function(){
    $(this).addClass("done");
}});

crossDomain:默认为false代表同源非跨域请求,设置为true进行跨域请求。(跨域原理为jsonp跨域请求)

dataFilter:是一个函数,请求成功后执行的函数,接受两个参数,data,type,data为服务器返回数据,type为请求时的dataType

function (data, type) {
    // 对Ajax返回的原始数据进行预处理
    return data  // 返回处理后的数据
}

dataType

预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如XML MIME类型就被识别为XML。在1.4中,JSON就会生成一个JavaScript对象,而script则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值:

"xml": 返回 XML 文档,可用 jQuery 处理。

"html": 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。

"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了"cache"参数。'''注意:'''在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)

"json": 返回 JSON 数据 。

"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

"text": 返回纯文本字符串

error:是一个函数,请求错误执行

global:默认为true,代表是否触发全局ajax请求事件。

ifModified:(默认: false) 仅在服务器数据改变时获取新数据。使用 HTTP 包 Last-Modified 头信息判断。在jQuery 1.4中,他也会检查服务器指定的'etag'来确定数据没有被修改过。(缓存时应用)

jsonp:在一个jsonp请求中重写回调函数的名字。这个值用来替代在"callback=?"这种GET或POST请求中URL参数里的"callback"部分,比如{jsonp:'onJsonPLoad'}会导致将"onJsonPLoad=?"传给服务器。(指定跨域jsonp请求的和后台约定的回调函数的名字key值)

jsonpCallback:为jsonp请求指定一个回调函数名。这个值将用来取代jQuery自动生成的随机函数名。这主要用来让jQuery生成度独特的函数名,这样管理请求更容易,也能方便地提供回调函数和错误处理。你也可以在想让浏览器缓存GET请求的时候,指定这个回调函数名。(jsonp callback的名字)

processData:(默认: true) 默认情况下,通过data选项传递进来的数据,如果是一个对象(技术上讲只要不是字符串),都会处理转化成一个查询字符串,以配合默认内容类型 "application/x-www-form-urlencoded"。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false

timeout:设置请求超时数
 

cookie的操作:cookie是一个key,value形式。

设置cookie:例如操作cookie username:

获取cookie:document.cookie

添加cookie:document.cookie="username=quanquan"

修改cookie:document.cookie="username=quanquanone"

删除cookie:document.cookie="username="

在ajax请求的时候想携带cookie,只要是同源策略,只要在发送请求前设置cookie就ok

ajax请求携带cookie问题:

1.ajax会自动带上同源的cookie,不会带上不同源的cookie
2. 可以通过前端设置withCredentials为true, 后端设置Header的方式让ajax自动带上不同源的cookie,但是这个属性对同源请求没有任何影响。会被自动忽略。
3. MDN对withCredentials的解释: withCredentials ,(
XMLHttpRequest.withCredentials  属性是一个Boolean类型,它指示了是否该使用类似cookies,authorization headers(头部授权)或者TLS客户端证书这一类资格证书来创建一个跨站点访问控制(cross-site Access-Control)请求。在同一个站点下使用withCredentials属性是无效的。此外,这个指示也会被用做响应中cookies 被忽视的标示。默认值是false。如果在发送来自其他域的XMLHttpRequest请求之前,未设置withCredentials 为true,那么就不能为它自己的域设置cookie值。而通过设置withCredentials 为true获得的第三方cookies,将会依旧享受同源策略,因此不能被通过document.cookie或者从头部相应请求的脚本等访问。)我接着解释一下同源。
众所周知,ajax请求是有同源策略的,虽然可以应用CORS等手段来实现跨域,但是这并不是说这样就是“同源”了。ajax在请求时就会因为这个同源的问题而决定是否带上cookie,这样解释应该没有问题了吧,还不知道同源策略的,应该去谷歌一下看看。

 

 

 

 

你可能感兴趣的:(ajax和请求cookie简单总结)