⑴ 前端提供给后端一个接口是什么意思
不存在前端提供给后端接口。
开发中,不存在前端给后端接口的情况,几乎都是后端给前端接口。提供的接口就是使用者可以通过服务端部署的机器提供出来的URL地址进行动态的数据交互。
通常的工作流为后端跟前端协商定义数据接口格式形成文档,后端实现接口,前端做静态的mock,后端实现服务接口,两边都完成后集成联调。
(1)前端后端在同一端口扩展阅读:
前端技术一般分为前端设计和前端开发,前端设计一般可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括基本的HTML和CSS以及JavaScript/ajax,现在最新的高级版本HTML5、CSS3,以及SVG等。
前端运行在PC端,移动端等浏览器上展现给用户浏览的网页。随着互联网技术的发展,HTML5,CSS3,前端框架的应用,跨平台响应式网页设计能够适应各种屏幕分辨率,完美的动效设计,给用户带来极高的用户体验。
⑵ 前端端口是怎么交互后端
随着互联网的高速发展以及IT开发技术的升级,前后端分离已成为互联网项目开发的业界标准使用方式。在实际工作中,前后端的接口联调对接工作量占Web前端人员日常工作的30%-50%,甚至会更高。
首先我们要知道为什么前后端要交互
为什么要前后端分离?
把前端与后端独立起来去开发,放在两个不同的服务器,需要独立部署。两个不同的工程,两个不同的代码库,不同的开发人员,前后端工程师需要约定交互接口,实现同步开发。开发结束后需要进行独立部署,前端通过接口来调用调用后端的API,前端只需要关注页面的样式与动态数据的解析和渲染,而后端专注于具体业务逻辑。
前后端分离的优点是什么?
1、彻底解放前端。前端不再需要向后台提供模板或是后台在前端HTML中嵌入后台代。
2、提高工作效率,分工更加明确。前端只关注前端的事,后台只关心后台的活,两者开发可以同时进行,在后台还没有时间提供接口的时候,前端可以先将数据写死或者调用本地的JSON文件即可,页面的增加和路由的修改也不必再去麻烦后台,开发更加灵活。
3、局部性能提升。通过前端路由的配置,我们可以实现页面的按需加载,无需一开始加载首页便加载网站的所有的资源,服务器也不再需要解析前端页面,在页面交互及用户体验上有所提升。
4、降低维护成本。通过目前主流的前端MVC框架,我们可以非常快速的定位及发现问题的所在,客户端的问题不再需要后台人员参与及调试,代码重构及可维护性增强。
5、实现高内聚低耦合,减少后端(应用)服务器的并发/负载压力。
6、即使后端服务暂时超时或者宕机了,前端页面也会正常访问,但无法提供数据。
7、可以使后台能更好的追求高并发、高可用、高性能,使前端能更好的追求页面表现、速度流畅、兼容性、用户体验等。
了解了这些,我们再来看前后端是怎么实现交互的
前端调用后端接口无外乎六种方法,如下:
1、打开vs,创建空的asp.net mvc演示项目【WebMVC】
(1)依次点击【文件】->【新建】->【项目】;
(2)在【新建项目】界面选择【Web】->【ASP.NET Web 应用程序(.NET Framework)】,输入名称,选择框架至少4.5版本,点击【确定】按钮;
(3)选择【空】->【MVC】->【确定】 ;
(4)创建好了项目。
2、在项目中
(1)在Controllers文件夹上点击鼠标右键,依次选择【添加】->【控制器】,即可完成HomeController的创建;
(2)在Controller的Index方法内,点击鼠标右键,选择【添加视图】;
(3)在项目中添加文件夹【Content】并添加jquery源文件;
(4)在Index页面添加jquery的引用。
3、在Index页面中添加一个输入文本框,一个按钮,以及显示结果的dom。
4、在HomeController中添加新的方法,用于接收前台传入的参数,组装后返回。
5、在Index页面,添加Jquery的ajax方式,调用后台接口,返回结果的处理代码。
6、在vs中,按F5调试运行结果,如下:
(1)在文本框中输入内容;
(2)点击按钮,调用接口,并将返回值显示在界面;
(3)如果要提交大量数据,或者敏感数据,请修改ajax的type方式,这样参数就不会在url地址栏中显示了。
以上回答,希望对你有所帮助
⑶ 前端开发和后台对接口一定要在同一个网络下吗
没有说一定,这个根据公司的配置来看的,如果是只能内网访问api的话 那就只能是同一局域网 或者是把你的ip配置到api的电脑上一下也是可以的,如果后台的接口全部是放在了线上的话 那就不需要同一网络了
⑷ 前端如何连接到后端
首先分两步来研究,第一步,前端请求后端接口,不去理会后端是如何实现的,只关注后端给我返回哪些数据,数据结构是怎样的。请求方法去参照各大框架或者浏览器自带的方法说明,该用GET用GET,该用POST用POST。获取到数据自行处理。
再者,处理node端,我需要给前端哪些字段,这些字段之间如何组织,我是否可以从数据库中直接得到还是需要进行一定的加工处理。这些都在node端完成。当两端对接好了一个如何接受,一个如何输出,你的问题就解决了!
前端用js和Ajax请求后端接口,
后端返回数据,
前端拿到数据以后再做处理。
以上就是前端如何的连接到后端的一个过程,如果你还不会的话,可以去网上找一些教程来学习!
⑸ 使用nginx代理解决跨域问题
先说说跨域这事情吧。早在13年,我刚接触前端开发的时候就遇到了跨域,那时候刚开始流行前后端分离。解决跨域就是直接用get jsonp。还是小白的我,也没有去想跨域的其它解决方式和为什么要采用这种解决方式。
最近,做一个二次开发的项目,也碰到了用网页请求http post,浏览器跨域,不能获取返回数据的问题,所以再次来梳理下这个跨域,为什么最后选择了nginx代理。
首先,什么是跨域呢?首先需要了解的是同源和跨源的概念。对于相同源,其定义为:如果协议、端口(如果指定了一个)和主机对于两个页面是相同的,则两个页面具有相同的源。 只要三者之一任意一点有不同,那么就为不同源。 同源策略限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的关键的安全机制。当一个资源从与该资源本身所在的服务器的域或端口不同的域或不同的端口请求一个资源时,资源会发起一个跨域 HTTP 请求。跨域不一定是浏览器限制了发起跨站请求,而也可能是跨站请求可以正常发起,但是返回结果被浏览器拦截了。 简单的来说,出于安全方面的考虑,页面中的JavaScript无法访问其他服务器上的数据,即“同源策略”。而跨域就是通过某些手段来绕过同源策略限制,实现不同服务器之间通信的效果。
跨域的解决方案也有很多种。
类型一:有些浏览器可以设置 ,降低它的安全性。但是对于一个网站,要求设置浏览器是不切合实际的。
类型二:直接用form方式 ,这种情况下不是ajax请求,而是直接访问目标地址了,不存在跨域问题,但是这个页面已经跳转了。而我们想实现的只是取另外一个地址的数据到本地显示而已。
类型三:服务端语言是能够处理的情况下。
1、CORS 是一个W3C标准,全称是”跨域资源共享”(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。跨域资源共享( CORS )机制允许 Web 应用服务器进行跨域访问控制,从而使跨域数据传输得以安全进行。其需要服务端和客户端同时支持。
对于简单请求,浏览器直接发出CORS请求。具体来说,就是在头信息之中,增加一个Origin字段。如果Origin指定的源,不在许可范围内,服务器会返回一个正常的HTTP回应。浏览器发现,这个回应的头信息没有包含Access-Control-Allow-Origin字段(详见下文),就知道出错了,从而抛出一个错误,被XMLHttpRequest的onerror回调函数捕获。注意,这种错误无法通过状态码识别,因为HTTP回应的状态码有可能是200。如果Origin指定的域名在许可范围内,服务器返回的响应,会多出几个头信息字段。 Access-Control-Allow-Origin 该字段是必须的。它的值要么是请求时Origin字段的值,要么是一个*,表示接受任意域名的请求。 Access-Control-Allow-Credentials 该字段可选。 Access-Control-Expose-Headers 该字段可选。
可以说这种办法主要在header上下功夫,设置Access-Control-Allow-Origin为所有*允许访问。虽然说它支持所有的请求方式,post,delete,put等等,但是它不能兼容ie6,7等等。
例如下图的nodejs express 例子:
2、服务端的http ajax请求全部改为 get jsonp方式 。该方式能够兼容老式浏览器。
3、iframe window.name 这种传值得方式很巧妙,兼容性也很好。但是在要访问数据的地址那个服务器要有一个空的中间页面拿来用。
4、postMessage , html5 window.postMessage。 同iframe window.name有点像,也是需要服务端有个空的html拿来接收数据。而且现在的postMessage兼容性也不好。
5、document.domain 修改为顶级域名。
6、 WebSocket ,协议不实行同源政策,只要服务器支持,就可以通过它进行跨源通信。
类型四:不是简单的前后端。假如有个第三方的api,自己有一个网站前端,一个网站后端。
1、自己的网站端和后端源码放在同一个服务端口和目录下,不存在跨域。当直接用网站前端的http访问第三方api,浏览器跨域。此时,改为由网站后端的服务端语言访问,做个中间人,将访问的数据给网页前端。
2、网站前端和后端不是同源的,采用以上的跨域方案,譬如CORS。同样的网站后端做中间人,访问第三方api,再转给网页前端。
3、使用nginx 反向代理解决跨域问题。 网站前端访问nginx服务的地址,nginx设置代理地址为访问第三方api地址,当访问代理地址的时候,浏览器访问的是nginx服务的地址,实际是访问第三方api地址。
注意:此时,如果目录下有个proxy.html,因为设置代理地址是/proxy,碰到这个地址就被转到”https://192.168.18.175:8088/api/v1.0.2/“,所以要访问proxy.html是访问不到的。
4、使用nginx代理地址是解决生产环境发布的问题了,那么我在开发的时候使用angular这样需要打包的框架怎么办呢。当然在开发环境下,angular也是由类似代理地址的解决方案的。
(1)创建配置代理文件:假设后端服务的访问地址为http://192.168.19.175:8088/api/v1.0.2/login,我们可以创建一个proxy.conf.json文件,放在package.json同目录下。
(2)改写package.json文件 ,采用--proxy-config命令(angular自带的命令)。
(3)ajax访问代理地址
此时, 执行 npm start ,即可发现,浏览器访问http://localhost:4200/api/v1.0.2/login 的同源地址,实际上是访问http://192.168.18.175:8088/api/v1.0.2/login.
angular在开发环境下代理地址的方法类似在生产环境下使用的nginx代理。但是测试angular是有一个/api代理地址的巧合。刚好第三方api上面的地址有个api,才能使用这个地址,并且能够简写一个api,才能成功访问,如果更改为其它的,譬如proxy,就测试失败。而且proxy.conf.json文件下的设置也只能是域名和端口。所以,本人测试,这或许是个巧合或者是缺陷。
五、其它
当然,跨域这个算是历史性的问题,以后也会存在这个问题。除了上面各种方法,以及根据各种方法使用的场合,还有许多其它的方法。例如各大流行框架react,vie应该也有像angular一样,能够处理跨域的开发环境方案,接下来,还是要继续学习和积累。
⑹ 前端和后端放在同一个服务器上是跨域吗
只要在一个域名下,当然就不是跨域了。