美文网首页
前端跨域一些知识点

前端跨域一些知识点

作者: Gen_ | 来源:发表于2019-04-22 10:00 被阅读0次

小结;

1、跨域是因为请求资源的服务器和资源服务器的协议,域名和端口不同,为了不跨域,就要让他们处在同一个域。如果是协议和端口不同,前端没法处理跨域。

2、常用的方法有一、JSONP(利用src没有跨域限制,传一个函数名作为参数到后台,后台拼接函数名和数据返回前端,然后自动调用前端的函数。缺点就是只能用get方法,限制多,不安全)

       二、CORS(跨域资源共享,就是在后台响应头中设置Access-Control-Allow-Origin允许指定的域访问,缺点是不安全)

       三、nginx(让请求和被请求的服务器处在同一个域下)

  3、跨域虽然存在,但是请求依然发出并且返回,只不过是被浏览器拦截了。

由于src属性的值可以是任意的URL,因此来自一个Web服务器的JavaScript程序或Web页面可以使用由另一个Web服务器输出的代码。

所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。

不同源的客户端脚本在没有明确授权下不能读取对方的资源。所以a.com下的js脚本采用ajax读取b.com里面的文件数据是会报错的。

如果要进行跨域请求,可以使用html的script标签来进行跨域请求,并在响应中返回要执行的script代码,其中可以直接使用json传递js对象,这种跨域的通讯方式称为jsonp。

特别说明:

一:如果是协议和端口造成的跨域问题“前台”是无能为力的。

跨域并不是请求发不出去,请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。你可能会疑问明明通过表单的方式可以发起跨域请求,为什么 Ajax 就不会?

因为归根结底,跨域是为了阻止用户读取到另一个域名下的内容,Ajax 可以获取响应,浏览器认为这不安全,所以拦截了响应。但是表单并不会获取新的内容,所以可以发起跨域请求。同时也说明了跨域并不能完全阻止 CSRF,因为请求毕竟是发出去了。

1.当用户发送localhost:80/时会被nginx转发到http://localhost:81服务;

2.当界面请求接口数据时,只要以/apis 为开头,就会被nginx转发到后端接口服务器上;

总结:nginx实现跨域的原理,实际就是把web项目和后端接口项目放到一个域中,这样就不存在跨域问题,然后根据请求地址去请求不同服务器(真正干活的服务器);

CORS 全称是跨域资源共享(Cross-Origin Resource Sharing),是一种 ajax 跨域请求资源的方式

当你使用 XMLHttpRequest 发送请求时,浏览器发现该请求不符合同源策略,会给该请求加一个请求头:Origin,后台进行一系列处理,如果确定接受请求则在返回结果中加入一个响应头:Access-Control-Allow-Origin; 浏览器判断该相应头中是否包含 Origin 的值,如果有则浏览器会处理响应,我们就可以拿到响应数据后台进行一系列处理,如果确定接受请求则在返回结果中加入一个响应头:Access-Control-Allow-Origin; 浏览器判断该相应头中是否包含 Origin 的值,如果有则浏览器会处理响应,我们就可以拿到响应数据。

# 直接请求nginx也是会报跨域错误的这里设置允许跨域

# 如果代理地址已经允许跨域则不需要这些, 否则报错(虽然这样nginx跨域就没意义了)

add_header Access-Control-Allow-Origin *;

可以参考链接:

【跨域 - 饥人谷_fanison - 简书】https://www.jianshu.com/p/1a22e1aa0e49

【什么是跨域?如何解决? - 仰望星空得少年 - 简书】https://www.jianshu.com/p/8fa2acd103ea

相关文章

  • 关于设置env等环境变量的思考

    1、如何处理跨域后台处理跨域前端处理跨域浏览器处理跨域 前端本地处理跨域:代理线上跨域的处理方式:Nginx反向代...

  • 跨域解决方案(史上最易懂)

    跨域总结 1.跨域思路 跨域解决方案一般分为两种:前端解决,后端解决 1.1 前端解决方案 通过前端解决的思想就是...

  • 浏览器跨域的那些事

    整理中 目标: 了解跨域 解决跨域 服务器配置跨域(java, nginx) 前端调试时配置解决跨域 一、什么是跨...

  • 前端跨域

    CORS跨域 1.CORS跨域-服务端设置,前端直接调用说明:后台允许前端某个站点进行访问 2.JSONP跨域-前...

  • 前端跨域一些知识点

    小结; 1、跨域是因为请求资源的服务器和资源服务器的协议,域名和端口不同,为了不跨域,就要让他们处在同一个域。如果...

  • vue前端做跨域设置

    最近一些朋友问我,vue的前端能不能做跨域?之前每次前端和后台调接口的时候都很麻烦。要什么后台做跨域支持什么?有的...

  • vue-cli proxyTable配置

    前端的跨域转发 后端不需要配置,前端就可以实现跨域 proxyTable 的通常配置 这样就可以实现基本的跨域转发...

  • 3小时速学JS原理

    内容:前端JS部分知识点原理速讲,内容包括且不限于 声明前置 引用类型 函数作用域链 闭包 跨域 面向对象 继承 ...

  • AJAX

    题目 手写一个ajax 跨域的常用实现方式 知识点 XMLHttpRequest 状态码 跨域:同源策略,跨域解决...

  • 记一次浏览器预检请求跨域问题的踩坑

    通用的跨域处理方案 如果你是一枚前端工程师,我想应该或多或少对浏览器跨域请求有一些了解。 跨域的详细知识,就不再这...

网友评论

      本文标题:前端跨域一些知识点

      本文链接:https://www.haomeiwen.com/subject/uymegqtx.html