• ajax跨域方法


    Ajax跨域

    跨域: 网站A去访问网站B的数据

    存在的问题: 浏览器有同源策略 (浏览器阻止ajax请求得到的数据在页面上的继续使用)

    解决方案: jsonp、cors、服务器代理

    jsonp的核心原理

    使用script标签的src属性进行跨域请求,得到的结果会被当成js代码来执行

    <script src="/login/status"></script>
    
    /login/status 响应的结果:
    var isLogin = true;
    var userId = "dasdast356532e";
    

    cors的核心原理

    CORS:全称为 Cross-originresource sharing,即跨域资源共享,它允许浏览器向跨域服务器发送 Ajax 请求,克服了 Ajax 只能同源使用的限制

    核心原理:在服务器端设置中间件,在中间件中设置两个属性:

    //在被访问的服务器上设置
    //设置可以访问的IP地址
    //* 标签所有IP地址都可以访问
    'Access-Control-Allow-Origin', '*'
    //设置可以访问的方式
    'Access-Control-Allow-Methods', 'GET, POST'
    
    
    // 引入模块并创建服务器对象
    const app = require('express')();
    app.listen(3000, () => {
      console.log('server is running');
    })
    //设置跨域访问
    app.all('*', function(req, res, next) {
    	res.header("Access-Control-Allow-Origin", "*");
    	res.header("Access-Control-Allow-Headers", "X-Requested-With");
    	res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
    	res.header("X-Powered-By",' 3.2.1')
    	res.header("Content-Type", "application/json;charset=utf-8");
    	next();
    });
    app.get('/api/goods', (req, res) => {
      res.send()
    })
    

    服务器代理的核心原理

    跨域访问主要是因为浏览器的同源政策导致跨域访问时,服务器响应了数据,但是浏览器因为同源政策不允许使用,所有可以访问自己的服务器,在服务器端访问其他网站的数据,获取到之后在响应给浏览器就可以使用

  • 相关阅读:
    linux中解压.tgz, .tar.gz ,zip ,gz, .tar文件
    hook(v16.7测试)?
    React优点?
    Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
    说说数据库连接池工作原理和实现方案?
    short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
    Oracle的数据优化(经常被问到)?
    存储过程和函数的区别?
    Collection 和 Collections的区别?
    说说数据库连接池工作原理和实现方案?
  • 原文地址:https://www.cnblogs.com/j-j-h/p/12056923.html
Copyright © 2020-2023  润新知