如何解决跨域问题(代码片段)

JenK JenK     2022-12-10     622

关键词:

作为前端开发,你还在为解决跨域而烦恼吗?
跨域怎么产生就不在细说了,详看浏览器的同源策略
这里我推荐这两种方式跨域,其它的跨域方式都还有很多但都不推荐,主流的也就这两种方式。

解决方案如下:

开发环境生产环境
方案一corscors
方案二proxynginx

方案一:cors~

cors 全称为 Cross Origin Resource Sharing(跨域资源共享)。这种方案对于前端来说没有什么工作量,和正常发送请求写法上没有任何区别,工作量基本都在后端这里。每一次请求,浏览器必须先以 OPTIONS 请求方式发送一个预请求(也不是所有请求都会发送 options, cors),通过预检请求从而获知服务器端对跨源请求支持的 HTTP 方法。在确认服务器允许该跨源请求的情况下,再以实际的 HTTP 请求方法发送那个真正的请求。推荐的原因是:只要第一次配好了,之后不管有多少接口和项目复用就可以了,一劳永逸的解决了跨域问题,而且不管是开发环境还是正式环境都能方便的使用。详细 MDN 文档

但总有后端觉得麻烦不想这么搞,那纯前端也是有解决方案的。

方案二:proxy+nginx

dev 开发模式下可以下使用 webpack 的 proxy 使用也是很方便,参照 文档 就会使用了。但这种方法在生产环境是不能使用的。在生产环境中需要使用 nginx 进行反向代理。不管是 proxynginx 的原理都是一样的,通过搭建一个中转服务器来转发请求规避跨域的问题。

开发环境

  • 本地开发的话如果你是框架之类的,直接使用proxy进行代理即可
  • 如果没有使用框架以及webpack之类的,最简单的就是禁用谷歌浏览器的安全策略
 devServer: 
    proxy: 
      \'/common-backend\': 
        target: `http://url:port/`,
        changeOrigin: true
      
    
  ,

生产环境

生产环境的话还是比较推荐nginx

  • nginx

比如后端地址为http://localhost:8089/mall_war/*.do
那么前端在代码里只需要访问/mall_war/*.do就可以,默认发的是部署服务器的ip来访问
然后再nginx里配置如下

server 
    listen       8066;
    server_name  commonFronted;
    # 项目静态资源目录
    location / 
        alias     /xxx/dist;
        index     index.html;
    

    location ^~/mall_war/ 
        proxy_pass http://localhost:8089/mall_war/;
        proxy_set_header  Host $host;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-Proto https;
        proxy_set_header  X-NginX-Proxy true;
        proxy_buffers 256 4k;
        proxy_max_temp_file_size 0k;
        proxy_connect_timeout 30;
        proxy_send_timeout 60;
        proxy_read_timeout 60;
        proxy_next_upstream error timeout invalid_header http_502;            
    

这里推荐第二种方式,开发线上都是很方便的,简单进行下配置即可实现了。

如何解决跨域问题(代码片段)

(1)考察目标1)跨域出现的原因2)解决的跨域的方式有哪些。(2)题目分析1)跨域出现的原因:同源策略。什么是同源策略:同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策... 查看详情

关于前端如何解决跨域问题(代码片段)

跨域什么是跨域  浏览器为保证安全,增加的同源限制,其实请求是发出了,服务器也相应了,但是被浏览器劫持了。所谓同源是指,域名,协议,端口均相同,浏览器才会觉得符合要求。  一旦有一个不同源,浏览器便会... 查看详情

跨域问题如何解决?(代码片段)

????????关注后回复 “进群” ,拉你进程序员交流群????????作者丨超哥哥来源丨main方法“ 今天的内容比较大众,相信广大程序猿都有遇到过,那么咱们就不多BB了,直接往下看。”首先聊聊为什么会出现跨域问题... 查看详情

为什么会有跨域的问题出现,如何解决跨域问题(代码片段)

为什么会有跨域的问题出现,如何解决跨域问题什么是跨域​定义:跨域是指a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都... 查看详情

为什么会有跨域的问题出现,如何解决跨域问题.(代码片段)

  目录  什么是跨域  什么是同源策略解决方式1、jsonp1.1)去创建一个script标签1.2)script的src属性设置接口地址1.3)接口参数,必须要带一个自定义函数名要不然后台无法返回数据。1.4)通过定义函数名去接收后... 查看详情

如何解决跨域问题(代码片段)

解决跨域三种方法什么是跨域,为什么要解决跨域。根据浏览器的同源策略。当浏览器不能响应执行网站的脚本时候,首先想到第一个问题点是否存在跨域问题。就是所谓同源策略,何为同源就我们经常上网是通过网址访问网站... 查看详情

解决跨域问题,实例调用百度地图(代码片段)

...问我跨域的问题了九种“姿势”让你彻底解决跨域问题2.如何解决跨域?JSONP: 查看详情

项目出现跨域问题,如何解决(代码片段)

现象昨天在做下载图片的时候,出现下图的现象.昨天在做下载图片的时候,出现下图的现象.后端数据库存储的是图片的url,要根据这个url请求图片服务器得到图片进行下载。为什么会出现跨域?像上面的情况就... 查看详情

cors和jsonp的区别,如何解决跨域问题?(代码片段)

在我们了解JSONP和CORS之前我们先明确一下:我们为什么要使用cors和jsonp呢?实际上,cors和jsonp都是用于解决跨域问题,当两个页面的协议、域名、端口号中有一个不一致时就存在了跨域,一旦出现跨域,浏... 查看详情

实战,springboot中如何解决cors跨域问题~(文末送书)(代码片段)

CORS(Cross-OriginResourceSharing)"跨域资源共享",是一个W3C标准,它允许浏览器向跨域服务器发送Ajax请求,打破了Ajax只能访问本站内的资源限制。在前后分离的架构下,我们经常会遇到跨域CORS问题,... 查看详情

pythonflask框架跨域问题的解决方法(代码片段)

文章目录一、跨域是什么二、如何解决跨域问题1.跨域请求的过程总结一、跨域是什么从一个域名去请求另一个域名,这个过程称之为跨域。浏览器从一个域名的网页去请求另一个域名的资源,域名、端口、协议有一个不... 查看详情

vue中如何解决跨域(代码片段)

1、配置代理跨域    config/index.jsproxyTable:'/api':target:'http://shuige.wicp.vip/',//目标接口域名changeOrigin:true,//是否跨域pathRewrite:'^/api':'/'//重写接口后台接口指向不统一所以指向所有/,cssSourceMap 查看详情

实战,springboot中如何解决cors跨域问题~(文末送书)(代码片段)

...trol-Allow-Origin'headerispresentontherequestedresource.下面看一下如何让你的SpringBoot项目支持CORS跨域。SpringBoot处理跨域在SpringBoot后端处理跨域比较简单,只需要在项目中添加如下一个配置类即可:/** * Spring Boot 2.0 解决跨域... 查看详情

nodejs+koa2如何解决跨域问题(代码片段)

基础知识同源策略是指三同:同协议/同域名/同端口对比双方:当前页面的地址和Ajax获取数据的地址(这里可能有点抽象,下面我会举例子说明)常见报错场景描述场景一:我在浏览器地址栏中输入http://12... 查看详情

问题:跨域及解决方案(代码片段)

...致css、js或者ajax对后端请求等资源无法访问的情况。要想解决跨域问题,首先先得了解什么是跨域问题。问题:什么是跨域跨越问题是由于浏览器的同源策略,是浏览器强制要求的安全策略,所以想要了解跨域,首先得了解同源... 查看详情

解决跨域session同步问题(代码片段)

跨域来源:(前端站点和后端API布署到不同的站点) 解决方案一.服务端设置1.配置允许跨域请求publicclassBaseAction/***支持跨域请求*@authorfxd*@paramresponse*@sinceJDK1.6*/protectedvoidcrossComain(HttpServletRequestrequest,HttpServletResponserespo 查看详情

springboot如何优雅的解决ajax+自定义headers的跨域请求[转](代码片段)

...页面地址不同即为跨域。具体可以查看下表:2、springboot如何解决跨域问题1.普通跨域请求解决方案:①请求接口添加注解@CrossOrigin(or 查看详情

springsecurity系列教程解决springsecurity环境中的跨域问题(代码片段)

...c;我会带大家进行代码实现,看看在SpringSecurity环境中如何解决跨域问题。一.启用SpringSecurity的CORS支持1.创建web接口我先在SpringBoot环境中,创建一个端 查看详情