首页 > 其他分享 >前端跨域三种解决方式(CORS、JSONP、代理跨域)

前端跨域三种解决方式(CORS、JSONP、代理跨域)

时间:2024-01-15 17:46:16浏览次数:28  
标签:www http 跨域 前端 JSONP CORS com 请求

什么是跨域?
跨域是 浏览器 为了安全而作出的限制策略(所以服务端不涉及到跨域);
浏览器请求必须遵循同源策略,即同域名、同端口、同协议;
例如:

http://www.abc.com到http://www.def.com的请求会出现跨域(域名不同)
http://www.abc.com:3000到http://www.abc.com:3001的请求会出现跨域(端口不同)
http://www.abc.com到https://www.abc.com的请求会出现跨域(协议不同)
解决方法:
1. CORS跨域 (前端不用动,后端设置Access-Control-Allow-Origin等)

服务端进行接口请求设置,前端直接调用
说明:后台设置前端某个站点进行访问
2. JSONP (动态创建script标签)

JSONP跨域-前端适配,后端配合
前后端同时改造
jsonp原理:img、srcipt,link标签的src或href属性不受同源策略限制,可以用来作为请求,后端接受请求后返回一个回调函数callback,调用前端已经定义好的函数,从而实现跨域请求,如:

$('#btn').click(function(){
var frame = document.createElement('script');
frame.src = 'http://localhost:3000/article-listname=leo&age=30&callback=func';
$('body').append(frame);
});

// 此为回调函数,其中res为后端返回的数据
function func(res){
alert(res.message+res.name+'你已经'+res.age+'岁了');
}
其中, func 这个回调函数命名,需要前后端沟通一致

3. 接口代理

通过修改nginx服务器配置实现代理转发
前端修改,后端不用
前端请求 a 地址,设置nginx服务,将 a 地址代理到 b 地址。

如vue项目中可以在 vue.config.js 中设置:

devServer: {
host: 'localhost', // 主机地址
port: '8000', // 端口
proxy: {
'/api': {
target: 'xxxxxxxx', // 真实地址
changeOrigin: true,
pathRewrite: {
'/api': ''
}
}
}
}

标签:www,http,跨域,前端,JSONP,CORS,com,请求
From: https://www.cnblogs.com/XiaoOuketang/p/17965907

相关文章

  • NGINX 路由配置与参数详解(https配置、跨域配置、socket配置)
    目录一、概述二、https配置1)获取SSL证书2)安装SSL证书3)Nginx配置修改4)重新加载Nginx配置三、nginx跨域配置四、nginxsocket配置五、NGINX路由配置1)基本的URI匹配2)nginx中斜杠(/)1、location以斜杠结尾,proxy_pass不以斜杠结尾2、location不以斜杠结尾,proxy_pass......
  • Spring Boot3 系列:Spring Boot3 跨域配置 Cors
    目录什么是CORS?SpringBoot如何配置CORS?前端代码注解配置全局配置过滤器配置注意事项什么是CORS?CORS,全称是“跨源资源共享”(Cross-OriginResourceSharing),是一种Web应用程序的安全机制,用于控制不同源的资源之间的交互。在Web应用程序中,CORS定义了一种机制,通过该机制,浏览器能......
  • .Net Core 系列: 集成 CORS跨域配置
    .NetCore系列:集成CORS跨域配置  目录什么是CORS?Asp.NetCore种如何配置CORS?CorsPolicyBuilder类详解注册以及使用策略三种方式EnableCors和DisableCors特性关于带证书与不带证书代码的实现跨源(cross-origin)不带请求证书(Credentials)跨源(cross-origi......
  • 服务端跨域setcookie失败
    前端域名www.a.com后端域名list.a.com后端setcookiedomain.a.com如果失败,前端ajax添加$.ajaxSetup$.ajaxSetup({xhrFields:{withCredentials:true},crossDomain:true});letbaseUrl="xxx.com"$.ajax({type:"post",co......
  • No 'Access-Control-Allow-Origin' header is present on the requested resource', 跨
    https://blog.csdn.net/dear_little_bear/article/details/839993911.当请求不在同一域名下的资源文件(ip地址+端口号)时,会报如下错误:“No‘Access-Control-Allow-Origin’headerispresentontherequestedresource.Origin‘http://localhost:8080’isthereforenotall......
  • Chrome浏览器的跨域设置(Window系统)
    注意:此方案仅适用于windows系统!!!做前后端分离的开发的时候,出于一些原因往往需要将浏览器设置成支持跨域的模式,而且chrome浏览器支持可跨域的设置,但是新版本的chrome浏览器提高了跨域设置的门槛,原来的方法不再适用了。一、开发使用习惯下载好谷歌浏览器以后,快捷方式复制两份放在......
  • 如何使用CORS来允许设置Cookie
    要在Vue客户端和Node服务器端之间启用跨域资源共享(CORS)以允许设置Cookie,您需要在两个地方进行适当的配置。下面是一个示例:在Vue客户端中:安装axios库(如果还没有安装):npminstallaxios在您的Vue项目的主入口文件(如main.js)中添加以下代码:importaxiosfrom'axios';axios.def......
  • 浅学JWT跨域认证
    JsonWeb令牌简称JWT由Header+Payload+Signature组成HeaderJWT头是一个描述JWT元数据的JSON对象,alg属性表示签名使用的算法,默认为HMACSHA256(写为HS256);typ属性表示令牌的类型,JWT令牌统一写为JWT。最后,使用Base64URL算法将上述JSON对象转换为字符串保存Payload有效载荷部分,是JWT的......
  • Hexo之相关内容CORS跨域实现方案
    title:Hexo之相关内容CORS跨域实现方案tags:[hexo,CORS,跨域,Javascript]新版原文:https://www.carlzeng.top/search?q=Hexo之相关内容CORS跨域实现方案版权声明:本博客所有文章除特别声明外,均采用BY-NC-SA许可协议。转载请注明出处!date:2023-12-1014:05:51categorie......
  • Amazon S3 CORS 实战
    AmazonS3(SimpleStorageService)是一项强大的对象存储服务,而跨域资源共享(CORS)是为了在Web应用中安全实现跨域数据传输而设计的标准。在本文中,我们将深入探讨如何在AmazonS3上实战配置CORS,确保安全地处理跨域请求。1.CORS概述1.1同源策略回顾同源策略是浏览器的安全机制,限......