美文网首页
跨域的解决方式

跨域的解决方式

作者: 沉沉___ | 来源:发表于2019-02-17 21:31 被阅读0次

一、 JSONP操作跨域

  1. 原理:利用 <script> 标签没有跨域限制(可以加载其它域选下的js),网页可以得到从其他来源动态产生的JSON数据。
  2. 使用JSONP:
    • 首先,网页动态插入<script>元素,由它向跨源网址发出请求。



      上面代码通过添加<script>元素,向服务器127.0.0.1:8080发出请求。
      注意,该请求的查询字符串有一个 callback 参数,用来指定回调函数名字,这对于JSONP是必须的。

    • 服务器收到这个请求后,会将数据放在回调函数位置返回。
    • 由于<script>元素请求的脚本,直接作为代码运行,这时浏览器只要定义了appendHtml函数,该函数就会立即调用,作为参数的JSON数据被视为Javascript对象。

3.实例演示:

  • 后端部分要做的:
    //server.js


  • 前端要做的:shownews这个前端交互是url:localhost:8080/index.html或127.0.0.1:8080/index.html
    //index.html


//使用script标签来定义一个jsonp的数据



二、CORS操作跨域

  1. CORS全称是跨域资源共享(Cross-Origin Resource Sharing),是一种ajax跨域请求资源的方式
  2. 原理:当你使用XMLHttpRequest发送请求时,浏览器发现该请求不符合同源策略,会给该请求加一个请求头(即协商处理):Origin,后台进行一系列处理,如果确定接受请求则在返回结果中加入一个响应头:Access-Control-Allow-Origin;浏览器判断该响应头中是否包含Origin的值,如果有,则浏览器会处理响应,我们就可以拿到响应数据,如果不包含,浏览器直接夺回,这是时我们就无法拿到响应数据。所以CORS的表象是让你觉得它与同源的ajax没什么区别。
  3. 实例演示:
  • 前端:设置一个Ajax请求


  • 后端:设置所需数据参数和同源策略


相关文章

  • springboot 在整合shiro后,跨域就失效了。

    原springboot 解决跨域问题 使用 tomcat 中的 Filter的方式解决跨域

  • 跨域

    ??JSONP只能解决GET请求跨域,不能解决POST请求跨域问题,XHR2可以解决GET,POST方式的请求跨域...

  • AJAX

    题目 手写一个ajax 跨域的常用实现方式 知识点 XMLHttpRequest 状态码 跨域:同源策略,跨域解决...

  • Vue实现跨域请求

    一般解决跨域问题可以通过CORS跨域、JSONP和反向代理跨域。下面分别介绍这三种跨域方式: 1、CORS 以ne...

  • SpringBoot 实现前后端分离的跨域访问(CORS)

    springBoot小白写博客时遇到了跨域问题,顺便记录一下踩过的坑 springboot解决跨域的几种方式 方式...

  • Flask-cors跨域

    什么是跨域 为什么要考虑跨域问题 同源策略 解决跨域问题 方式一: 使用 JSONP (一种非Ajax技术,需要前...

  • 跨域解决方式

    出于安全方面的考虑,浏览器遵从同源策略的原则。即同协议(http/https)、同域名(jianshu.com/j...

  • 跨域解决方式

    JSONP实现跨域 原理:网页通过添加一个 元素,向服务器请求JSON数据,这种做法不受同源政策限制;服务器收到请...

  • 跨域 & 跨域的几种解决方式

    什么是跨域 跨域是由于浏览器同源策略的限制,它是对 JavaScript 的限制。浏览器不允许执行其他网站的脚本 ...

  • 浏览器跨域及其解决方案

    title: 浏览器跨域及其解决方案author: Maydate: 20220428 什么是跨域跨域的表现解决跨...

网友评论

      本文标题:跨域的解决方式

      本文链接:https://www.haomeiwen.com/subject/uulneqtx.html