什么是跨域?如何解决跨域?

article/2025/10/3 15:42:26

✨ 目录

    • 🎈 什么是跨域
    • 🎈 跨域场景
    • 🎈 解决跨域的四种方式

🎈 什么是跨域

  • 域: 是指浏览器不能执行其他网站的脚本
  • 跨域: 它是由浏览器的 同源策略 造成的,是浏览器对 JavaScript 实施的安全限制,所谓同源(即指在同一个域)就是两个页面具有相同的协议 protocol,主机 host 和端口号 port 则就会造成 跨域

域名组成

🎈 跨域场景

  • 场景的跨域场景有哪些,请参考下表
当前url请求url是否跨域原因
http://www.autofelix.cnhttp://www.autofelix.cn/api.php协议/域名/端口都相同
http://www.autofelix.cnhttps://www.autofelix.cn/api.php协议不同
http://www.autofelix.cnhttp://www.rabbit.cn主域名不同
http://www.autofelix.cnhttp://api.autofelix.cn子域名不同
http://www.autofelix.cn:80http://www.autofelix.cn:8080端口不同

🎈 解决跨域的四种方式

  • nginx的反向代理
  • 使用 nginx 反向代理实现跨域,是最简单的跨域方式
  • 只需要修改 nginx 的配置即可解决跨域问题,支持所有浏览器,支持session,不需要修改任何代码,并且不会影响服务器性能
// nginx配置
server {listen       81;server_name  www.domain1.com;location / {proxy_pass   http://www.domain2.com:8080;  #反向代理proxy_cookie_domain www.domain2.com www.domain1.com; #修改cookie里域名index  index.html index.htm;# 当用webpack-dev-server等中间件代理接口访问nignx时,此时无浏览器参与,故没有同源限制,下面的跨域配置可不启用add_header Access-Control-Allow-Origin http://www.domain1.com;  #当前端只跨域不带cookie时,可为*add_header Access-Control-Allow-Credentials true;}
}
  • jsonp请求
  • jsonp 是服务器与客户端跨源通信的常用方法。最大特点就是简单适用,兼容性好 兼容低版本IE,缺点是只支持 get 请求,不支持 post 请求
  • 原理时网页通过添加一个 <script> 元素,向服务器请求 json 数据,服务器收到请求后,将数据放在一个指定名字的回调函数的参数位置传回来
//jquery实现
<script>
$.getJSON('http://autofelix.com/api.php&callback=?', function(res) {// 处理获得的数据console.log(res)
});
</script>
  • 后端语言代理
  • 可以通过一种没有跨域限制的语言中转一下,通过后端语言去请求资源,然后再返回数据
  • 比如 http://www.autofelix.cn 需要调用 http://api.autofelix.cn/userinfo 去获取用户数据,因为子域名不同,会有跨域限制
  • 可以先请求 http://www.autofelix.cn 下的 php 文件,比如 http://www.autofelix.cn/api.php,然后再通过该 php 文件返回数据
// api.php 文件中的代码
public function getCurl($url, $timeout = 5)
{$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);$result = curl_exec($ch);curl_close($ch);return $result;
}$result = getCurl('http://api.autofelix.cn/userinfo');return $result;
  • 后端语言的设置
  • 主要通过后端语言主动设置跨域请求,这里以 php 作为案例
// 允许所有域名访问
header('Access-Control-Allow-Origin: *');
// 允许单个域名访问
header('Access-Control-Allow-Origin: https://autofelix.com');
// 允许多个自定义域名访问
static public $originarr = ['https://autofelix.com','https://baidu.com','https://csdn.net',
];// 获取当前跨域域名
$origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : '';
if (in_array($origin, self::$originarr)) {// 允许 $originarr 数组内的 域名跨域访问header('Access-Control-Allow-Origin:' . $origin);// 响应类型header('Access-Control-Allow-Methods:POST,GET');// 带 cookie 的跨域访问header('Access-Control-Allow-Credentials: true');// 响应头设置header('Access-Control-Allow-Headers:x-requested-with,Content-Type,X-CSRF-Token');
}

http://chatgpt.dhexx.cn/article/400DIFwq.shtml

相关文章

关于跨域后端解决跨域问题

一、为什么会有跨域 出于浏览器的同源策略限制。**同源策略&#xff08;Sameoriginpolicy&#xff09;**是一种约定&#xff0c;它是浏览器最核心也最基本的安全功能&#xff0c;如果缺少了同源策略&#xff0c;则浏览器的正常功能可能都会受到影响。同源策略会阻止一个域的ja…

什么是跨域?跨域问题怎么解决?

目录 一、什么是跨域&#xff1f; 二、为什么会出现跨域问题&#xff1f; 三、常见的跨域场景 四、跨域解决方法 1、JSONP &#xff08;1&#xff09;JSONP原理 &#xff08;2&#xff09;JSONP和AJAX对比 &#xff08;3&#xff09;JSONP优缺点 &#xff08;4&#x…

跨域的本质

简介 相信大家在做web系统开发的时候&#xff0c;都遇到过前端页面访问另一个服务器而非本服务器从而遭遇的跨域问题。跨域是个很常见的问题&#xff0c;虽然在web系统中的解决方式很简单&#xff0c;加一段耳熟能详的代码&#xff0c;或者一个注解&#xff0c;或者在某个框架中…

跨域及解决

文章目录 什么是跨域&#xff1f;Origin同源的例子不同源的例子为什么需要跨域&#xff1f;请求跨域了&#xff0c;那么请求到底发出去没有&#xff1f; 如何解决&#xff1f;1.JSONP2.corsa.简单请求b.复杂请求 3.postMessage4.websocket5.nginx6.document.domain Iframe cli…

什么是跨域?以及解决跨域的方法?

【学习什么是跨域&#xff0c;以及如何解决跨域。】 1、什么是跨域&#xff1f;&#xff08;什么是同源策略&#xff1f;&#xff09; 跨域&#xff1a; 由于浏览器的同源策略引起的&#xff0c;如果说协议、域名、端口号有任何一个不一样&#xff0c;都会引起跨域 为什么会出…

【跨域】Java后端解决跨域问题

废话不多说&#xff0c;先上完整代码 建corsConfig文件&#xff0c;copy下面内容&#xff0c;放进去 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfigur…

什么是同源策略,什么是跨域,如何解决跨域

1.什么是同源策略&#xff1f; 同源策略/SOP&#xff08;Same origin policy&#xff09;是一种约定&#xff0c;由 Netscape 公司 1995 年引入浏览器&#xff0c;它是浏览器最核心也最基本的安全功能&#xff0c;现在所有支持 JavaScript 的浏览器都会使用这个策略。如果缺少…

前端解决跨域----代理跨域

跨域报错&#xff1a; CORS error 为什么会跨域 ​ 先了解跨域的概念&#xff1a;发送请求的url的协议、域名、端口三者之间任意一个与当前页面的地址不同则视为跨域。 解决跨域 vue.config.js 设置代理跨域 module.exports {devServer: {proxy: {/api: {target: "ht…

什么是跨域问题?跨域解决问题

一.为什么会出现跨域问题? 出于浏览器的同源策略限制.同源策略是一种约定,它是浏览器最核心也是最基本的安全功能,如果缺少了同源策略,则浏览器的正常的功能可能会受到影响,跨域收是Web是构建在同源策略基础上的,浏览器只是针对同源策略的一种实现,同源策略会阻止一个域的Jav…

什么是跨域及怎么解决跨域问题?

什么是跨域&#xff1f; 这篇博文解释的挺清楚&#xff0c;我直接引用 什么是跨域&#xff1f;怎么解决跨域问题&#xff1f;_L瑜-CSDN博客_跨域是什么意思 跨域&#xff0c;指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的&#xff0c;是浏览器施加的安全…

VUE跨域、常用解决跨域的方法

当我们遇到请求后台接口遇到 Access-Control-Allow-Origin 时&#xff0c;那说明跨域了。 跨域是因为浏览器的同源策略所导致&#xff0c;同源策略&#xff08;Same origin policy&#xff09;是一种约定&#xff0c;它是浏览器最核心也最基本的安全功能&#xff0c;同源是指&…

什么是跨域?怎么解决跨域问题

文章目录 一、同源策略二、同源策略案例三、什么是跨域四、跨域解决方法1.ajax的jsonp概念核心用法 2.CORS方式3.nginx 转发 一、同源策略 同源策略&#xff0c;是由 Netscape 提出的一个安全策略&#xff0c;它是浏览器最核心也是最基本的安全功能&#xff0c;如果缺少同源策…

什么是跨域以及为什么会出现跨域以及跨域的解决方案

1.什么是跨域&#xff1f; 跨域&#xff1a;指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的&#xff0c;是浏览器对javascript施加的安全限制。 • 同源策略&#xff1a;是指协议&#xff0c;域名&#xff0c;端口都要相同&#xff0c;其中有一个不同都会产…

什么是跨域?如何解决?

一、什么是跨域&#xff1f; 跨域&#xff1a;指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的&#xff0c;是浏览器对javascript施加的安全限制。 例如&#xff1a;a页面想获取b页面资源&#xff0c;如果a、b页面的协议、域名、端口、子域名不同&#xf…

什么是跨域? 出现原因及解决方法

目录 一、什么是跨域二、为什么有跨域问题&#xff1f;三、解决跨域问题的方案1.Jsonp2.nginx3.CORS3.1 什么是cors3.2 原理 四、GateWay网关中实现跨域步骤 一、什么是跨域 跨域&#xff1a;浏览器对于javascript的同源策略的限制 。 同源政策的目的&#xff0c;是为了保证用…

什么是跨域及解决跨域都有哪些方法?

一.同源策略 浏览器为了隔离潜在的恶意文件&#xff0c;使用同源策略&#xff0c;限制从一个源加载的文档或脚本和另一个源的资源进行交互&#xff08;不同源之间的文档&#xff0c;资源的交互&#xff09;; 通俗的理解&#xff1a;浏览器规定&#xff0c;A 网站的 JavaScript…

什么是跨域,怎么解决跨域?

1.什么是跨域 跨域是指浏览器不能执行其他网站的脚本。它是浏览器同源策略造成的&#xff0c;是浏览器对JS实施的安全限制。 2.常见的跨域场景 3.什么是同源策略&#xff1f; &#xff08;所谓同源是指&#xff1a;“域名”、“协议”、“端口”均为相同&#xff09; 同源策略/…

最常见的六种跨域解决方案

目录&#xff1a; 前言&#xff1a;什么是跨域&#xff1f;JSONPCORS搭建Node代理服务器Nginx反向代理postMessageWebsocket总结 前言&#xff1a;什么是跨域&#xff1f; 跨域就是当在页面上发送ajax请求时&#xff0c;由于浏览器同源策略的限制&#xff0c;要求当前页面和…

什么是跨域?跨域解决方法

一、为什么会出现跨域问题 出于浏览器的同源策略限制。同源策略&#xff08;Sameoriginpolicy&#xff09;是一种约定&#xff0c;它是浏览器最核心也最基本的安全功能&#xff0c;如果缺少了同源策略&#xff0c;则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策…

SpringBoot解决跨域问题

遇到前端跨域访问问题&#xff0c;类似于这样的&#xff1a; 在Springboot项目里加上这个配置文件CorsConfig.java&#xff0c;重启之后即可实现跨域访问&#xff0c;前端无需再配置跨域。 import org.springframework.context.annotation.Bean; import org.springframework…