zoukankan      html  css  js  c++  java
  • 跨域

    .net Core用法:

    1. startUP中Configure方法添加:

    //使用跨域
    app.UseCors("AllowAllOrigin");

    2. startUP中ConfigureServices中添加:

      services.AddCors(op =>
                {
                    op.AddPolicy("AllowAllOrigin", builder =>
                    {
                        builder
                        //.WithOrigins(urls)
                        .AllowAnyMethod()
                        .AllowAnyHeader()
                        // .AllowAnyOrigin()//允许所有主机访问
                        .AllowCredentials();//允许处理cookie
    
                    });
                });
    

      

    3.  BaseController

    使用[EnableCors("AllowAllOrigin")]

    一、浏览器不允许Ajax跨站请求,所以存在Ajax跨域问题,目前主要有两种办法解决。

    1、在请求页面上使用Access-Control-Allow-Origin标头。

      使用如下标头可以接受全部网站请求:

    header('Access-Control-Allow-Origin:*')

      使用如下标头可以接受指定网站请求:

    header('Access-Control-Allow-Origin:http://www.abc.com')

      所以,服务器写法:

    header('Access-Control-Allow-Origin:*');
     
    die( json_encode(array('msg'=>'msg....')) );

    ajax写法和平常一样:

    <script>
        $.ajax({
            url:'http://192.168.1.124/homekoo.com/zde/cors_1.php',
            dataType:'json',
            success:function(data){
                alert(data.msg);
            }
        });
    </script>
    

    二、跨域通信的几种方式:

    • 1、JSONP

    • 2、WebSocket

    • 3、CORS

    • 4、Hash

    • 5、postMessage

    1 .在CORS和postMessage以前,我们一直都是通过JSONP来做跨域通信的。

    JSONP的原理:通过<script>标签的异步加载来实现的。比如说,实际开发中,我们发现,head标签里,可以通过<script>标签的src,里面放url,加载很多在线的插件。这就是用到了JSONP。

    JSONP的实现:

    比如说,客户端这样写:

        <script src="http://www.smyhvae.com/?data=name&callback=myjsonp"></script>

    上面的src中,data=name是get请求的参数,myjsonp是和后台约定好的函数名。
    服务器端这样写:

            myjsonp({
                data: {}
    
            })

    于是,本地要求创建一个myjsonp 的全局函数,才能将返回的数据执行出来。

    2. WebSocket的用法如下:

        var ws = new WebSocket('wss://echo.websocket.org'); //创建WebSocket的对象。参数可以是 ws 或 wss,后者表示加密。
    
        //把请求发出去
        ws.onopen = function (evt) {
            console.log('Connection open ...');
            ws.send('Hello WebSockets!');
        };
    
    
        //对方发消息过来时,我接收
        ws.onmessage = function (evt) {
            console.log('Received Message: ', evt.data);
            ws.close();
        };
    
        //关闭连接
        ws.onclose = function (evt) {
            console.log('Connection closed.');
        };
    WebSocket的最大特点,就是后台脚本不限语言,标准输入(stdin)就是 WebSocket 的输入,标准输出(stdout)就是 WebSocket 的输出。

    3. CORS与JSONP的使用目的相同,但是比JSONP更强大。

    JSONP只支持GET请求,CORS支持所有类型的HTTP请求。JSONP的优势在于支持老式浏览器,以及可以向不支持CORS的网站请求数据。

  • 相关阅读:
    ubuntu18.04安装ssh服务
    跳转
    【WinForm】—窗体之间传值的几种方式
    使用jQuery完成复选框的全选和全不选
    VS2015下载安装随笔记录
    关于c#数据类型,类型转换,变量,常量,转义符。
    浅谈表单同步提交和异步提交
    form表单提交和跳转
    2019年8月19日矩阵
    C# WinForm快捷键设置技巧
  • 原文地址:https://www.cnblogs.com/yexiaoyanzi/p/8527475.html
Copyright © 2011-2022 走看看