美文网首页饥人谷技术博客
跨域的几种解决方式

跨域的几种解决方式

作者: 202b37dbe4bd | 来源:发表于2019-01-15 15:04 被阅读2次

什么是跨域?

页面向一个与当前域名不同的页面或服务器发送请求的行为。

什么叫域名不同?

两个url的协议、域名或者端口有一个或多个不同就叫域名不同。

跨域会导致什么问题?

浏览器出于安全角度默认会阻止这种行为。

如何解决?

1. JSONP

利用<script>标签可以请求跨域文件的特性,在需要发送请求的时候生成一个新的<script>标签,然后令其src属性为一个指定的js文件并且将参数作为url的参数。

var newScript = document.createElement("script");
var url = 'http://www.example.com/?index=0&length=5';
newScript.src = url;
newScript.id = 'temp';
document.body.appendChild(newScript); //插入script后会自动发送请求
document.querySelector('script#temp').remove(); //删除script节点

// 请求返回后被调用的方法
function showNews(data){
/*
    处理代码
*/
}

当服务器的js文件接收到请求时,可以根据url中的参数来确定返回的数据,并且返回一个方法的调用(这个方法已经在前端页面声明过),方法的参数就是要返回的数据。


服务器端返回方法的调用

页面在<script>标签加载完成后会自动执行返回的方法。
这样就实现了跨域请求数据。

2. CORS

当一个服务器想要接受某个其他域的请求时,可以在响应头的Access-Control-Allow-Origin属性中添加允许请求的url。

Access-Control-Allow-Origin: https://www.example.com

当页面请求一个跨域请求并且成功返回数据以后,浏览器会比较这次请求的请求头的origin属性是否存在于响应头的Access-Control-Allow-Origin里面,如果存在就会显示请求结果,如果不存在就会报跨域错误。

3.降域

将两个根域名相同的页面或者iframe的document.domain设置为他们的根域名,之后它们之间可以发送ajax请求。

4.window.postMessage()

通过这个方法可以实现两个不同域名的页面之间通信,接受方可以监听window.message事件,并且通过判断origin来确定请求来源的合法性。

相关文章

  • SpringBoot 实现前后端分离的跨域访问(CORS)

    springBoot小白写博客时遇到了跨域问题,顺便记录一下踩过的坑 springboot解决跨域的几种方式 方式...

  • 跨域 & 跨域的几种解决方式

    什么是跨域 跨域是由于浏览器同源策略的限制,它是对 JavaScript 的限制。浏览器不允许执行其他网站的脚本 ...

  • Ajax 请求和跨域

    跨域的几种方式: cors方式 cross-orign-resource-shareing(跨域)参考:http:...

  • 跨域的解决方式

    跨域有很多种方式,下面就简单说说跨域最常见的几种解决方式1、JSONPJSONP是服务器与客户端跨源通信的常用方法...

  • #hello,JS:15 同源策略 & 跨域(JSONP)

    跨域有几种常见的方式?你有没有跨域使用的经验? 方式: 使用jsonp实现跨域?使用cors实现跨域?浏览器另类的...

  • 基于nodejs的跨域代理

    对于前端开发的童鞋,如果涉及到和后端协同开发,有可能会碰到跨域的问题,对于解决跨域的问题,目前有几种解决方式,例如...

  • web跨域解决方案

    围绕以下几点介绍: 什么是跨域? 常用的几种跨域处理方法? crossdomain.xml解决跨域问题 什么是跨域...

  • 解决跨域的几种方式

    nginx 在location拦截目录下,处理options信令 服务端 拦截options请求,返回一系列Acc...

  • 几种跨域的解决方式

    jsonp http://js.jirengu.com/cenuxecevi/2/edit CORS http:/...

  • 跨域的几种解决方式

    什么是跨域? 页面向一个与当前域名不同的页面或服务器发送请求的行为。 什么叫域名不同? 两个url的协议、域名或者...

网友评论

    本文标题:跨域的几种解决方式

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