zoukankan      html  css  js  c++  java
  • Javascript 之 跨域

    什么是跨域

    浏览器有同源策略,不允许 ajax 访问其他域的接口

    跨域条件:协议、域名、端口,有一个不同就算跨域

    http 默认端口是 80

    https 默认端口是 443

    有三个标签允许跨域加载资源

    <img src="..." />  // 可用于打点统计,统计网站可能是其他域

    <script src="..."></script>  // 可以用于 JSONP,也能使用 CDN

    <link href="..." />  // 可以使用CDN,CDN的也是其他域

    跨域的几种方式

    1、JSONP 跨域的数据请求

      JSONP 实现原理

      1、加载 http://www.baidu.com/test.html

      2、不一定服务端真正有一个 test.html 文件

      3、服务器可以根据请求,动态生成一个 test.html 文件,返回

      4、同理于 <script src="http://www.baidu.com/api.js"></script> 

    <script>
      window.callback = function (data) {
        console.log(data);  // 这是跨域得到的信息
      }
    </script>
    <script src="http://www.baidu.com/api.js"></script>
    <!-- api.js 内容是: callback({x: 100, y: 200}) -->

    2、服务端设置 http header 这是将来解决跨域问题的一个趋势

    // 注意:不同后端语言的写法可能不一样

    // 第二个参数填写允许跨域的域名,* 代表允许所有域,不建议直接写 *
    response.setHeader("Access-Control-Allow-Origin", "http://a.com, http://b.com");
  • 相关阅读:
    正则表达式的一些符号
    备份 Repository Backup
    Delphi 文件类型
    superobject.pas 其他人修改的
    TCustomCombo.SetItemIndex(const Value: Integer);
    Error reading symbol file
    任务栏窗口列表
    找回已删除的文件或目录
    总目录
    在Mac下使用crontab执行定时脚本
  • 原文地址:https://www.cnblogs.com/joffe/p/7677301.html
Copyright © 2011-2022 走看看