如何解决js跨域问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决js跨域问题相关的知识,希望对你有一定的参考价值。

参考技术A 常用 jsonp 或者 利用src可跨域性质

参考技术B 可以使用用jsonp 参考技术C 三种方法实现js跨域访问
1.基于iframe实现跨域
基于iframe实现的跨域要求两个域具有aa.xx.com,bb.xx.com这种特点,也就是两个页面必须属于一个基础域(例如都是xxx.com,或是xxx.com.cn),使用同一协议(例如都是 http)和同一端口(例如都是80),这样在两个页面中同时添加document.domain,就可以实现父页面调用子页面的函数,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
页面一代码:
<html>
<head>
<script>
document.domain = "xx.com";
function aa()
alert("p");

</script>
</head>
<body>
<iframe src="http://localhost:8080/cmsui/2.html" id="i">

</iframe>
<script>
document.getelementbyid('i').oncg = function()
var d = document.getelementbyid('i').contentwindow;
d.a();

;
</script>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
页面二代码:
<html>
<head>
<script>
document.domain = "xx.com";
function a()
alert("c");

</script>
</head>
<body>
</body>
</html>
这时候父页面就可以调用子页面的a函数,实现js跨域访问

如何解决ajax跨域请求?

1.什么是跨域?

  a.域名不同

  b.域名相同,端口不同

注:只有域名相同,端口相同时,才可以访问数据

可以使用jsonp解决ajax跨域请求的问题。

2.什么是jsonp?

  Jsonp其实就是一个跨域解决方案。Js跨域请求是不可以的,但是js跨域请求js脚本是可以的。可以把数据封装成一个js语句,做一个方法的调用。跨域请求js脚本可以得到此脚本。得到js脚本之后会立即执行。可以把数据作为参数传递到方法中。就可以获得数据。从而解决跨域请求的问题。 

以上是关于如何解决js跨域问题的主要内容,如果未能解决你的问题,请参考以下文章

如何解决IE8下Ajax调用时跨域的问题

如何解决 Ajax 跨域请求不到的问题

如何解决ajax跨域请求?

NestJS跨域问题

如何解决微信上跨域请求withCredentials带不上cookie

如何解决跨域问题