目录

同源策略 :

跨域请求 :

跨域请求的常见解决方案 :

1. jsonp

2. cors(跨域资源共享)

3. proxy(代理)


同源策略 :

什么是同源策略 ?

+ 同源策略是  浏览器  给出的关于网络安全方面的一个要求(约束)

+ 约定了, 请求方和目标方地址必须要保证 传输协议 域名 端口号 完全一致

+ 当你在发送请求的时候

+ 如果 打开页面的 完整地址 和 接受服务器的 完整地址

=> 只要 传输协议 或者 域名 或者 端口号 有任意一个不一样

=> 就叫做触发了  同源策略 

=> 当你触发同源策略以后, 浏览器不允许你获取该服务器返回给你的数据

同源 :  传输协议 和 域名 和 端口号 都完全一样

非同源 : 传输协议 和 域名 和 端口号 其中有任意一个不一样


跨域请求 :

** 跨域请求 **

+ 当请求触发了  同源策略 

+ 并且我们还需要请求非同源服务器的数据的时候

+ 我们管触发了 同源策略 的请求叫做  跨域请求 

跨域请求的常见解决方案 :

1. jsonp

 jsonp 的实现方式 : 

+ 利用  script  标签的  src  属性, 去请求一个 非同源的 服务器地址

+ 要求: 服务器给出的内容必须是一段合法的可以执行的  js 代码

+ 要求: 服务器给出的  js 代码需要是一个  '函数名(数据)'  的格式

script 标签 :
        + 一个引入外部文件的 标签
        + 这个标签的意义, 默认会把引入的所有内容当做  js 代码来执行
        + script 标签的意义 :
          => 就是引入一个外部文件
          => 不管文件名和后缀是什么
          => 只是读取这个文件内部的内容
          => 把读取到的内容当做 js 代码来执行

src 属性 :
        + 作用: 标注引入一个外部资源的连接路径
        + 特点:
          => src 属性是 W3C 标准给出专门用来引入外部资源的属性
          => 通过 src 属性引入的外部地址,浏览器不会去管 src 引入的内容是否是跨域的
          => 所以不受浏览器同源策略的影响

jsonp 技术是一个 和 ajax 技术没有关系的一种 跨域方式
        + 利用 script 标签和 src 属性
        + 利用 script 标签会把请求回来的内容当做 js 代码执行
        + 利用 src 属性不受同源策略的影响
        + 要求: 后端返回的必须是个 合法的 js 格式 字符串


2. cors(跨域资源共享)

cors(跨域资源共享) :

+ 和前端没有任何关系的一种跨域请求方案

+ 前端: 该如何发 ajax 请求, 就如何发

+ 由后端开启 cors 配置

后端开启 cors 配置 :

<?php// 跨域// 在这里告诉浏览器, 你别管, 我愿意给他数据// 告诉浏览器, 哪些域名可以请求我// 表示允许的域名, * 表示通配header("Access-Control-Allow-Origin: *");// CORS// 告诉浏览器, 允许哪些请求方式header("Access-Control-Request-Methods:GET, POST, PUT, DELETE, OPTIONS");// 告诉浏览器, 允许哪些额外的请求头信息header('Access-Control-Allow-Headers:x-requested-with,content-type,test-token,test-sessid,authorization');echo 'hello world';
?>

3. proxy(代理)

proxy(代理) 进行跨域 :

+ 代理方式跨域: 任何一台服务器都可以进行代理的设置和配置

+ apache 服务器

=> 代理 http 请求地址免费

=> 代理 https 请求地址需要证书

+ nginx 服务器

=> 代理 http 和 https 都是免费的

=> 注意 : 请求路径一定要是全英文 , 不要出现汉字

 使用小皮配置代理 : 

配置代理 :

1. 打开小皮面板

=> 把服务器从 apache 切换到 nginx

2. 打开小皮面板

=> 左侧边栏点击设置

=> 点击配置文件

=> 选到 vhosts.conf 文件

=> 点击 0localhost_8080

3. 找到 server 的闭合括号

=> 在闭合括号的上一行, 进行代码配置的书写

location /xx {

proxy_pass 你请求跨域的地址;

}

/xx: 你随便书写的, 叫做代理标识符

proxy_pass 后面的地址, 就是你请求的时候会跨域的地址

4. 一定要重启服务器

前端 :

    const xhr = new XMLHttpRequest()// 注意: 当你发送请求的时候, 请求地址 一定要直接书写 代理标识符// 这样服务器才会发现, 你请求的是一个 代理标识符, 我确实配置过// nginx 就会帮你把请求转发到 proxy_pass 配置的地址了xhr.open('GET', '/xhl')xhr.onload = function () {console.log(xhr.responseText)}xhr.send()

后端 :

<?phpecho 'hello world';?>

浏览器的同源策略和跨域请求_学习版相关推荐

  1. 服务器安全:浏览器同源策略与跨域请求、XSS攻击原理及防御策略、如何防御CSRF攻击

    主要包括 浏览器同源策略与跨域请求 XSS攻击原理及防御策略 如何使用SpringSecurity防御CSRF攻击 CC/DDOS攻击与流量攻击 什么是SSL TLS HTTPS? 一.浏览器的同源策 ...

  2. ajax背景、ajax对象、ajax状态、ajax与http、ajax请求数据接口、同步与异步、ajax请求XML数据、封装ajax函数、artTemplate简介、同源策略和跨域请求、JSONP

    AJAX简介: ajax背景: 1.AJAX(Asynchronous JavaScript And Xml)异步的 JavaScript 和 XML:ajax是浏览器提供的一套API,最早出现在谷歌 ...

  3. 浏览器的同源策略与跨域问题的解决方案

    浏览器的同源策略与跨域问题的解决方案 参考文章: (1)浏览器的同源策略与跨域问题的解决方案 (2)https://www.cnblogs.com/yanggb/p/10735763.html 备忘一 ...

  4. 同源策略和跨域请求解决方案

    一.一个源的定义 如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源. 举个例子: 下表给出了相对http://a.xyz.com/dir/page.html同源检测的示例: ...

  5. 浏览器的同源策略及跨域解决方案

    同源策略 一个源的定义 如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源. 举个例子: 下表给出了相对http://a.xyz.com/dir/page.html同源检测的示 ...

  6. 浏览器同源策略以及跨域请求时可能遇到的问题

    跨域请求基础知识 浏览器的同源策略 浏览器的源指的是 协议://域名:端口 这样的URL组合.我们首先要明确几点 www.foo.com 和 foo.com 是不同域 www.foo.com 和 ww ...

  7. 浏览器的同源策略与跨域

    本文所有案例在本地址都可找到:https://github.com/dancingZhou/sameOrigin/tree/dev 什么是同源策略 两个页面地址中的协议.域名和端口号一致,则表示同源. ...

  8. 浏览器同源策略及跨域的解决方法

    浏览器同源策略及跨域的解决方法 参考文章: (1)浏览器同源策略及跨域的解决方法 (2)https://www.cnblogs.com/laixiangran/p/9064769.html 备忘一下.

  9. Django - - 进阶 - - 同源策略和跨域解决方案

    目录 同源策略 一个源的定义 同源策略是什么 举个例子 jQuery中getJSON方法 JSONP应用 1, 同源策略 1.1 一个源的定义 如果两个页面的协议,端口(如果有指定)和域名都相同,则两 ...

最新文章

  1. VSCode 安装 Go 插件、gopls 是个什么东东
  2. JavaScript语句模版
  3. 《HTML5 canvas开发详解(第2版)》——1.3 本书使用的基础HTML页面
  4. Kinect学习(三):获取RGB颜色数据
  5. IOS中scrollsToTop问题小结
  6. Docker的特性解析
  7. junit 验证日志输出_JUnit规则–引发异常时执行附加验证
  8. 重返数学史的黄金时代,由数学推动诞生的人工智能,一部人类智慧形成的历史...
  9. 快钱接口php,快钱支付接口
  10. 产品经理,如何降噪学习?
  11. 多线程003 - 再谈CyclicBarrier
  12. frameset的一些操作
  13. 重置uchome密码
  14. 大二下-个人课堂总结
  15. 计算机专业的创新方向和创业情况,计算机专业创新创业教育模式探究
  16. 黄河中下游地区精化似大地水准面研究与实施
  17. 关于uni-app的ui库、ui框架、ui组件
  18. Django博客开发(十三)—一个简单的站内搜索
  19. 什么是Web 2.0
  20. 亲测五种高效实用的脱单方法,赶紧收藏帮你快速找到优质对象!

热门文章

  1. yum 安装 Kubernete
  2. 微信“跳一跳”辅助工具——利用Python开发
  3. linux下删除引导mbr分区标志,查看MBR引导信息
  4. 使用全局变量有什么好处?有什么坏处?_为什么月季大神喜欢给月季花的花苞套网套?好处坏处讲清楚了...
  5. “实体梁的铰接”你还不会吗?SOLIDWORKS Simulation轻松实现
  6. 电子行业MES系统解决方案,实现工厂高效管理与降本增效
  7. 幂函数、指数函数公式转换
  8. Eclipse CDT中出现 Nothing to build for XXX 的问题
  9. MoreFunTV 猫范对Winows8的支持
  10. VOIP DTMF 笔记