1.JavaScript在发送AJAX请求时,URL的域名地址是使用绝对地址还是相对地址?
使用绝对路径或者相对路径都可以,不过使用绝对路径的时候,如果访问地址是外部域名,就会发生跨域问题。
2.什么是浏览器跨域访问操作,js如何实现?
浏览器跨域访问操作就是:一个域上加载的脚本获取或操作另一个域上的文档属性
① 基于iframe实现跨域
有两个页面属于一个基础域(如:xxx.com这样的),然后使用同一协议(如都是 http或https)和同一端口(如都是80端口),那么当父页面调用子页面的函数时,就会发生跨域。
父页面代码(parent.html)
<meta charset="utf-8">
<iframe src="child.html" id="test">
</iframe>
<script type="text/javascript">
document.getElementById('test').onload = function(){
var c = document.getElementById('test').contentWindow;
c.child_method(); //调用子页面的方法
};
</script>
子页面代码(child.html)
<meta charset="utf-8">
<script type="text/javascript">
function child_method(){
alert("调用子页面方法")
}
</script>
当访问parent.html时,触发child.html里的方法
② 基于script标签实现跨域
当向页面引用其他域名下面的js时,也算是跨域。比如:
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
③ 后台代理方式
这种方式可以解决所有跨域问题。就是将后台作为代理平台,每次对其它域的请求都先转交给本域的后台。然后本域的后台通过模拟http请求(类似爬虫)去访问其它域的资源,再将得到的资源返回给前台。