• 解决跨域的四种常见方法


    解决跨域的四种常见方法

    1.cors跨域 响应头的方式

    res.writeHead(200, {
        "content-type": "text/html;charset=utf-8",
        // "Access-Control-Allow-Headers":"*",//请求头跨域
        "Access-Control-Allow-Origin": "*",
    
        //  cors跨域
    });
    

    2.jsonp
    目的:为了让所有的人都能去访问 慎用
    原理:超链接(href) 表单(action) 图片(src) script(src) 不考虑跨域问题,用服务器地址代替路径
    使用方法: 1)服务端配合前端,res.wirte()写前端规定的函数名 2)前端发送数据时,发送回调函数,服务端处理数据后,直接执行函数名

    script的举例

    前端

    var script = document.createElement("script");
    script.src = "http://localhost:4008?a=3&b=4";
    document.body.appendChild(script);
    // 如果script的src指向服务端,服务端中write内容将是这个script执行的脚本
    
    
    function getRes(res) {
        console.log(res);
    } 
    

    服务端:

    var http=require("http");
    var querystring=require("querystring");
    var server=http.createServer((req,res)=>{
        req.on("data",_data=>{
            
        });
        req.on("end",()=>{
            var obj=querystring.parse(req.url.split("?")[1]);
            res.writeHead(200,{"content-type":"text/html;charset=utf-8"});
            // res.write("var a=3;");
            // res.write("var b=4;");
            // res.write("console.log(a+b);");  使用这种方法,服务端写好脚本,前端收到消息,就会执行,用处很多,自己体会
            var sum=Number(obj.a)+Number(obj.b)
             res.write("getRes("+sum+")");  //执行前端的getRes函数,处理后数据传参过去
            res.end();
        })
    });
    server.listen(4008);
    

    3.webSocket
    原理:通信前发送xml信息,服务解析 符合条件的域名,允许访问 很多网站会有crossdomain.xml文件,这里不说那些网站了,自己去找找

    var script = document.createElement("script");
    script.src =
        "https://sp0.*****.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=morty&json=1&p=3&sid=22084_1436_13548_21120_22036_22073&req=2&csor=0&cb=callback"; //json改变script的src地址指向
    document.body.appendChild(script);
    
    function callback(obj) {
        console.log(obj);
    }
    

    4.正向代理和反向代理
    原理: 服务器间的访问是没有跨域问题的
    方法: 建立自己的服务器,向别的服务器发送请求,获取数据后,返回给自己

  • 相关阅读:
    [GXYCTF2019]BabyUpload
    [GYCTF2020]Blacklist
    [极客大挑战 2019]HardSQL
    PHP实现MVC框架路由功能模式
    色环电阻的阻值识别
    python的内存回收机制
    配置Openfiler做ISCS实验
    windows server 2008r2 在vmware里自动关机
    VMware Workstation网络修改vlan id值
    linux的服务自动启动的配置
  • 原文地址:https://www.cnblogs.com/94-Lucky/p/13456651.html
Copyright © 2020-2023  润新知