28 ajax

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
AjAX
    刷新部分网页区域,AJAX缓存比较严重
    AjAX是基于XMLHttpRequest对象实现的
     
    var request = new XMLHttpRequest(); // 新建XMLHttpRequest对象  
     
    request.onreadystatechange = function () { // 状态发生变化时,函数被回调
        if (request.readyState === 4) { //判断请求是否完成
             
            if (request.status === 200) {//判断是否是一个成功的响应
                // 成功,通过responseText拿到响应的文本:
                return success(request.responseText);
            } else {
                // 失败,根据响应码判断失败原因:
                return fail(request.status);
            }
        } else {
            // HTTP请求还在继续...
        }
    }
 
    // 发送请求:
    request.open('GET', '/api/categories');
    request.send();
     
     
    安全限制
        因为浏览器的同源策略导致的,所以请求其他的域名会报错
        默认情况下,JavaScript在发送AJAX请求时,URL的域名必须和当前页面完全一致
            完全一致的意思是
                域名要相同(www.example.com和example.com不同)
                协议要相同(http和https不同)
                端口号要相同(默认是:80端口,它和:8080就不同)
                 
        AJAX请求外域的方法:
            1、一是通过Flash插件发送HTTP请求,这种方式可以绕过浏览器的安全限制,但必须安装Flash,并且跟Flash交互。不过Flash用起来麻烦,而且现在用得也越来越少了。
            2、二是通过在同源域名下架设一个代理服务器来转发,JavaScript负责把请求发送到代理服务器 如:'/proxy?url=http://www.sina.com.cn'
            3、第三种方式称为JSONP,它有个限制,只能用GET请求,并且要求返回JavaScript
            4、CORS
            CORS
                如果浏览器支持HTML5,那么就可以一劳永逸地使用新的跨域策略:CORS了
                CORS全称Cross-Origin Resource Sharing,是HTML5规范定义的如何跨域访问资源
                Origin表示本域,也就是浏览器当前页面的域。当JavaScript向外域(如sina.com)发起请求后,浏览器收到响应后,首先检查Access-Control-Allow-Origin是否包含本域,如果是,则此次跨域请求成功,如果不是,则请求失败,JavaScript将无法获取到响应的任何数据。
        

  

posted on   悬剑  阅读(153)  评论(0编辑  收藏  举报

导航

< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示