如何解决跨域问题,来看看阿里P7架构师是怎么解决的,你有遇到吗?

使用 R 的长短期记忆 (LSTM) 在 R 中实现 LSTM 网络涉及使用 TensorFlow 和 Keras 软件包,它们为构建和训练深度学习模型提供了一个用户友好的界面。这些步骤包括准备数据、定义 LSTM 架构、编译模型、在数据上训练模型、评估其性能以及进行预测。与传统的 RNN 不同,LSTM 网络由于其独特的架构,可以在长序列上维护信息。与传统的 RNN 不同,LSTM 网络由于其独特的架构,可以在长序列上维护信息。为了在 R 中实现 LSTM 网络,我们将使用 Keras 库,该库为构建和训练神经网络提供了高级接口。 阅读详情

现在越来越多的项目就算是一个管理后端也偏向于使用前后端分离的部署方式去做,为了顺应时代的潮流,一前后端分离就产生了跨域问题,所以许多同学把跨域和前后端分离项目联系在了一起,其实跨域产生的原因并不是前后端分离导致的,那我们一起来看一下,希望可以靠这一篇文章解答大家所有的跨域问题

一、跨域产生的条件

  • 使用xmlHttpRequest,即我们通常说的ajax请求
  • 浏览器做了这个事
  • 访问的域名不同,即访问的html页面是a域名下的,但内部js发送的ajax请求的目标地址却是b域名

以上三个条件缺一不可,尤其是第三个条件许多做移动端的同学可能都没有听过,因为移动端爽爽的用各种http请求狂发不同的域名,但是浏览器不允许我们这么做,为了一个词安全

二、如何解决跨域问题

解决跨域问题的根本就是要打破上述的三个限制中的任何一个,我们来看一下逐个击破的方式

JSONP方式

jsonp是打破第一重限制,用了XMLHttpRequest就跨域,那我不用这种方式了,我们怎么做的,来看一段jquery的带jsonp的ajax请求

$.ajax({
   type : "GET",
   url : "http://api.map.baidu.com/geocoder/v2/",
   data:"address=上海",
   dataType:"jsonp",
   jsonp:"callback",
   jsonpCallback:"showLocation",
   success : function(data){
	   alert("成功");
   },
   error : function(data){
   	   alert("失败");
   }
});

看似用了ajax请求,其实内部完全不是那么回事,多了jsonp和jsonpCallback选项,它内部将代码翻译并把页面上的dom操作成这样

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    <script type='text/javascript'>
      // 后端返回直接执行的方法,相当于执行这个方法,由于后端把返回的数据放在方法的参数里,所以这里能拿到res。
      window.showLocation = function (res) {
        console.log(res)
        //执行ajax回调
      }
    </script>
    <script src='http://api.map.baidu.com/geocoder/v2/?address=上海&callback=showLocation' type='text/javascript'></script>
  </body>
</html>

这个时候,html页面的script src标签回去访问api.map.baidu.com的服务端,由于script,img这种标签浏览器是不受xmlhttprequest限制的,可以随意访问,这个时候对应的后端代码取得address参数,最后根据双方约定好的callback参数,返回一个被包装后的json,即

showLocation({
	status: 0,
	result: {
		location: {
			lng: 121.4219317908279,
			lat: 31.361653367912695
		},
		precise: 1,
		confidence: 80,
		comprehension: 99,
		level: "道路"
	}
})

然后浏览器直接执行了对应的这个showLocation()… 等等,这个不就相当于执行了我们上面定义的window.showLocation方法并且传入了我们需要的json返回吗,那我们的ajax success方法里就可以得到这个返回类型了,并且没有跨域,是不是很精妙。

CORS

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)跨域资源共享 CORS 详解。这个玩样用于“破解”掉浏览器的限制,说是破解其实也是浏览器认识到了一些头部就放行了的意思,需要在http的response内多设置几个头部

  • Access-Control-Allow-Origin? 表明允许所有的origin(浏览器的html页面路径)访问,而并非是同源的origin
  • Access-Control-Request-Method? 表明允许所有的http request头,访问,因为浏览器在触发如下几个场景会在发送真正的数据前发送options这样的预检请求检测,一旦预检通过后才会发送真正的get或post数据请求,这个时候我们按照cors的设置就需要允许对应的method访问,触发的几种情况包括
    1:请求的方法不是GET/HEAD/POST
    2:POST请求的Content-Type并非application/x-www-form-urlencoded, multipart/form-data, 或text/plain
    3:请求设置了自定义的header字段等
  • Access-Control-Allow-Headers? 设置所有header均可以被允许,这个配置联通上述的request method options检测一起使用,可以在需要自定义header的场景下使用
  • Access-Control-Allow-Credentials:true 这个参数只有当需要跨域使用cookie传递时才需要设置为true,并且需要前端ajax配置使用xhrField:{withCredential:true}时才能传递cookie,另外safari和最新版本的chrome浏览器还需要在设置内放开对应限制,可参考我的秒杀课程,当这个参数被设置成true时候Access-Control-Allow-Origin就不能设置为*,否则就变成任何origin域都能允许传递cookie了,可将其调整为前端origin字段传什么我就用什么

若你使用的是nginx反向代理,则可以直接在nginx反向代理上配置

location /{
	proxy_pass http://backendserver;

	add_header Access-Control-Allow-Methods *;
	add_header Access-Control-Allow-Credentials true;
	add_header Access-Control-Allow-Origin $http_origin;
	add_header Access-Control-Allow-Headers *;
	
}

代理法

打破不同源的限制,我只要让它同源就可以了,比如要我的静态页面是 http://a.com/index.html 动态ajax请求访问的是http://b.com/api/***

我只需要将对应的服务部署在不同的机器上,然后使用一个公共的c.com的域名作为nginx反向代理的入口域名,在将静态服务和动态服务分别挂在后面的被代理局域网服务器内,修改配置

server{
	listen:80;
	server_name: c.com;

	#静态资源
	location /{
		proxy_pass http://localhost:8080/;
	}

	#ajax动态请求
	location /api{
		proxy_pass http://localhost:8081/;

	}

}

这样就变成同源了

Java_supermanNO1:专注于Java开发技术的研究与知识分享!

————END————

  • 点赞(编辑不易,感谢您的支持)

  • …

  • 转发(分享知识,传播快乐)

  • …

  • 关注(每天更新Java开发技术)

  • …

深入解析车载以太网DoIP诊断:Wireshark实战TCP/UDS报文分析 本文深入解析车载以太网DoIP诊断,重点介绍如何利用Wireshark进行TCP/UDS报文实战分析。文章详细讲解了从以太网帧、IP帧、TCP段到DoIP协议及UDS服务的逐层拆解方法,并提供了使用Wireshark定位通信故障(如乱序、丢包、重传)的实用技巧,帮助工程师高效排查车载诊断网络问题。 阅读详情

相关推荐

Mellanox CX7网卡搭配400G光模块实战:从选型到部署的完整指南

本文详细解析了Mellanox CX7网卡与400G光模块的选型策略与部署实践,涵盖硬件对比、兼容性验证及性能调优。重点介绍了OSFP光模块的选择要点和常见问题排查方法,帮助用户构建高性能网络基础设施,适用于AI训练、金融交易等场景。

efc1234567的博客 1295

如何解决跨域问题

跨域问题一直是前后端头疼的事情,现在教你几招解决这个问题!!!

guoxuying的博客 5336

UE5在Ubuntu22.04.4下的高效开发环境配置指南

本文详细介绍了在Ubuntu 22.04.4系统上配置UE5高效开发环境的完整指南,包括系统准备、显卡驱动安装、UE5引擎编译与配置、开发工具链设置以及性能优化技巧。通过逐步指导,帮助开发者快速搭建稳定的UE5开发环境,解决常见问题,提升开发效率。

weixin_29251131的博客 383

阿里P7架构师是如何解决跨域问题的!你有遇到吗?

现在越来越多的项目就算是一个管理后端也偏向于使用前后端分离的部署方式去做,为了顺应时代的潮流,一前后端分离就产生了跨域问题,所以许多同学把跨域和前后端分离项目联系在了一起,其实跨域产生的原因并不是前后端分离导致的,那我们一起来看一下,希望可以靠这一篇文章解答大家所有的跨域问题 一、跨域产生的条件 使用xmlHttpRequest,即我们通常说的ajax请求 浏览器做了这个事 访问的域名不同,即...

153

单相PWM整流器搭建训练——(一)拓扑原理介绍

单相整流器是一种将交流电转换为直流电的设备,主要由变压器、整流元件和滤波电路组成。变压器将输入的交流电压转换为适合整流的较低电压,整流元件(如二极管)利用其单向导电性将交流电转换为脉动直流电,最后滤波电路去除脉动直流电中的纹波,输出较为平滑的直流电,从而实现交流到直流的转换,广泛应用于各类电源设备中。

DikouNass的博客 1590

使用PackStack工具自动化部署OpenStack

搭建 OpenStack 环境,每个组件的安装和配置都需要熟悉其特定的依赖关系、参数设置等,对于初学者来说容易出错。PackStack 工具通过集成一系列脚本和配置文件,便于快速搭建OpenStack练习环境。CPU:支持 Intel VT - x 或 AMD - V 硬件虚拟化技术,并且要在 BIOS 里开启此功能。内存:16GB以上存储:200GB以上可用空间(2)VMware WorkStation16.0以上版本(3)远程连接工具(如Xshell、MobaXterm)

2301_80440447的博客 4095

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

什么是跨域? 浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域 域名: 主域名不同 http://www.baidu.com/index.html –&amp;gt;http://www.sina.com/test.js 子域名不同 http://www.666.baidu.com/index.html –&amp;gt;http://www.555.baidu.co...

飞扬_柳絮的专栏 12万+

电阻抗成像肺功能测试数据分析与直方图生成

本文介绍了基于MATLAB的电阻抗成像(EIT)肺功能测试数据分析方法。研究针对32×32像素的EIT图像序列,通过三步算法处理:首先计算特定时间点与谷值图像的差值,然后分析1秒后峰值与1秒值的差值,最终计算比值矩阵并处理异常值。系统展示了数据预处理、关键时间点检测、比值计算及统计分析的全流程,包括生成概率分布直方图和空间分布图等可视化方法。该分析为无创肺功能评估提供量化指标,可应用于临床呼吸监测和疾病诊断。

huanghm88的专栏 198

前后端交互 跨域问题的解决

1、什么是跨域?? 指的是浏览器不能执行其他网站的脚本,也就是前后端的代码运行在不同的服务器上的时候就会出现跨域问题,它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。 2、如何解决跨域?? 方案一、使用Ajax的jsonp来解决(只能使用get请求) 前端代码: 后台代码: 方案二、使用JQurey的jsonp插件(对于get、post请

sharehu的博客 1万+

DO-254标准详解:航空电子硬件设计保证指南全方位解析

RTCA DO-254, 也被称为《机载电子硬件设计保证指南》,是航空电子硬件设计和验证中的关键标准,旨在为确保机载电子硬件的安全性提供设计保证。自2000年首次发布以来,DO-254就成为了民航和军用飞机中电子硬件设计认证的基准文件。随着航空硬件技术的进步和日益复杂化,确保硬件设计的准确性、可靠性和安全性变得至关重要。本标准是由RTCA和EUROCAE共同开发的,适用于涉及机载硬件的航空公司、飞机制造商、供应商和认证机构。

qq_41854911的博客 3682

【人工智能 Open AI】程序员怎样提升研发效率?从技术、业务、项目管理等等多个方面来阐述。

程序员要想提升研发效率,需要从技术、业务、项目管理等多方面着手,多靠工具配合实践实现,从而提升研发效率。

AI天才研究院 5529

浅谈解决前端跨域的两个方法

在前端开发中在使用Ajax调用后端接口的时候经常会遇到跨域的问题,导致不能拿到后端接口返回的数据.下面我们来看看解决跨域的几个方法.在解决跨域问题的前,我们先来了解一下什么是跨域,跨域:即请求的地址与被请求的地址协议头、域名、端口有一个不一样就叫跨域.相反,不跨域即叫同源,同源:即协议头、域名、端口完全一致就叫同源;如:(http://www.example.com/detail.html) 与以...

Mr.桐先生的博客 1万+

深度剖析:Spring AI 与 LangChain4j,谁才是 Java 程序员的 AI 开发利器?

首先介绍 AI 时代 Java 开发框架选择背景,接着对比两者功能特性(Spring AI 的生态集成与标准化设计、LangChain4j 的多模型适配与提示工程)、应用场景(企业级系统改造与创新产品开发)、开发体验(学习成本与调试工具)、生态扩展(Spring 商业支持与 LangChain4j 开源社区)、性能安全(企业级优化与自主安全实现)及成本趋势(短期投入、长期回报与技术演进),最后给出选型建议与混合架构方案。

博客 5446

到了2020年,年薪80w的阿里P7专家,顶尖的技术人才只因做到了这几点

最近部门招聘,很多工程师,包括我在内都参与了内推和面试的过程,经过这次招聘,我发现能够最终拿到offer的人,基本上在看到简历的那一瞬间就已经定下来了,后续的面试只不过是一种验证而已(注意,是验证,而不是走过场),除非你面试过程中犯错误,或者你不想来,否则,那个offer一定是可以拿下的。 那些拿下offer的人,基本上都有这么一些特征 1. 学校不错,一般都是985,211,如果学...

javajavajava 4万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

阿里P7架构师浅谈Java 的年薪 40W 是什么水平?

做Java架构师(P7)岗位有三年时间了,期间也从事了很多招聘定级工作,来说说我见解吧。 既然楼主提到年薪40w,那我们看看什么公司,什么级别可以给到,再看看要求。 阿里是Java大厂,所以可以参考阿里的标准,阿里一般是16薪水,所以就是税前2.5w,在阿里应该是P6就可以达到,而对P6的要求是什么呢,我们内部有个简单的概述,那就是可以独立完成部门内部的项目,而面试过程中,也会有相应的考察。 ...

xingduan5153的博客 6492

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

阿里P7架构师到底有多难?

搜索“架构师”三个字,会自动出现几个高频问题:1、架构师是做什么的?2、架构师需要掌握哪些知识?3、架构师和程序员的区别是什么?江湖上对于架构师有着各种各样的传说,但架构师到底是一个什么...

架构文摘 1956

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

阿里P7架构师的成长之路

前言 系统架构师是近几年来在国内外迅速成长并发展良好的一个职位,它的重要性及给互联网行业所带来的影响是不言而喻的。很多程序员把成为一名优秀的架构师作为自己职业生涯奋斗的目标,但很多人努力却用不对地方,前段时间我与在阿里的P7架构师谈到了这个问题,并且整理出来,希望对在迷茫期的程序员有所帮助。 1、问:阿里的技术专家P7从招聘层面上来说,比如工作年限、项目经历、技术能力等需要达到什么样的要求...

Java进阶之路 1043

阿里p6和p7的主要区别是什么?

1. 先给大家看看 P6和P7 的通用标准描述: P6 级别的程序员 title 是高级工程师,P7 便已经是专家级别。 2. 对应的薪酬待遇差别: P6 大概的月薪应该是25K-32K左右,年薪在30-40W左右; P7 大概的月薪应该是35K-45K左右,年薪在50-60W左右; 除了薪资更高,P7级别还能拿到股票,P6级别则没有。 3. 阿里P6和P7具体能力的区别: 阿里 P...

九章算法的博客 2万+

阿里P7技术知识点,Android架构师年薪50w(1)

*阿里薪资结构:**一般是12+1+3=16薪•年底的奖金为0-6个月薪资,90%人可拿到3个月。

2401_84132544的博客 797

全新出品!阿里 P5 工程师~P8 架构师晋升路线揭秘

阿里巴巴终于公开了从初级程序员到架构师的学习路线图,这里相对应的基本上就是从P5到P8的晋升体系!今天老师将会带着大家从初级程序员开始一点点分享整个晋升体系!

weixin_70730532的博客 3138

阿里80W年薪的Java架构师(p7)到底是什么水平?没被劝退算你牛逼!

前言 提到IT人员,人们的第一印象就是高薪资,包括转行来学Java的人绝大多数都是冲着高薪以及就业广泛来的。 前段时间跟同学聊天,她说她老公在一家互联网公司做Java后台开发,年薪四十万,最近在准备复习,想着明年冲一波阿里p6或者p7。 很多人都听过阿里的p级职位层级,那今天就跟大家“揭秘”一下,想要成为p7岗的Java技术专家你需要掌握哪些技术。 本篇文章我将分成三个内容来讲: ①了解阿里p级职位,大厂岗位薪资(2020) ②阿里p7技术专家水平(Java岗) ③如何让自己一步步贴近p7技术

QAQFyl的博客 4519

入职阿里巴巴,成为年薪百万阿里P7高级架构师需要必备哪些技术栈

备注:(架构视频包含:Spring boot、Spring cloud、Dubbo、Redis、ActiveMQ、Nginx、Mycat、Spring、MongoDB、ZeroMQ、Git、Nosql、Jvm、Mecached、Netty、Nio、Mina、性能调优、高并发、tomcat 负载均衡、大型电商项目实战、高可用、高可扩展、数据库架构设计、Solr 集群与应用、分布式实战、主从复制、高可用集群等高端视频。redis消息订阅、pipeline、事务、modules、布隆过滤器、缓存LRU。

代码界的扛把子 1198

后端如何解决跨域问题_不理解理解跨域问题?看看阿里P7架构师是如何解决跨域问题的...

现在越来越多的项目就算是一个管理后端也偏向于使用前后端分离的部署方式去做,为了顺应时代的潮流,一前后端分离就产生了跨域问题,所以许多同学把跨域和前后端分离项目联系在了一起,其实跨域产生的原因并不是前后端分离导致的,那我们一起来看一下,希望可以靠这一篇文章解答大家所有的跨域问题一、跨域产生的条件使用xmlHttpRequest,即我们通常说的ajax请求浏览器做了这个事访问的域名不同,即访问的htm...

weixin_39576751的博客 75

到了2020年,年薪50W的阿里P7高级架构师需要掌握哪些技术栈

大家都知道,阿里P7高级技术专家,基本上是一线技术人能达到的最高职级,也是很多程序员追求的目标。达到 年入百万的P7 Java高级架构师级别,不仅要具备 优秀的编程能力和系统设计能力,在技术视野和业务洞察力方面,也要有很深的积淀。 最近技术大牛 马士兵老师 邀请他一位在阿里做架构师的朋友,整理出一份xmind——“Java高级架构师所需技术栈”,对于需要提升技术能力的初中级Java程序员们,提...

javajavajava 2873
上一篇: 一文详解Java线程生命周期与状态切换
下一篇: 面试官:你竟然不晓得Mybatis用了哪些设计模式?
Java_supermanNO1
博客等级 码龄7年 1170粉丝 329原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值