初试前端跨域

60 阅读1分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第10天,点击查看活动详情

1、坚持真是太难了!

第10天,快把我榨干了。今天研究一下前端跨域的问题,为下一个项目的搭建做准备。

2、准备两个web项目:

image.png

在htids项目中,边下如下内容:

image.png 访问后可轻松得到js文件中所要输出的内容。如下: image.png 那么,如果我们把local.js从 htids 项目中移除,在 htids2 项目中添加 local.js,如何让项目1 访问到项目2 中的 js?

<script>标签的src属性并不被同源策略所约束,所以可以获取任何服务器上的脚本并执行。 所以,可以将 项目1 中的index.html内容稍作修改:

<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
    <title>test</title>
    <script type="text/javascript" src="http://localhost:8080/htids/local.js"></script>
</head>
<body>
This is 8010 web!
</body>
</html>

可以看到,访问结果可以看到:

image.png

2、JSONP

Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。

image.png 如上图:在项目1 中创建一个回调函数,在项目2中调用项目1的回调函数,就可以将项目2的数据传到到项目1了。 JSONP的原型:创建一个回调函数,然后在远程服务上调用这个函数并且将数据以 JSON形式作为参数传递,完成回调。将JSON数据填充进回调函数