3-5 Angular-跨域原理

跨域原理

jsonp原理是什么?

  • 借助标签的src属性进行数据请求。

[图片上传失败...(image-deafac-1535601977491)]
[图片上传失败...(image-16daa5-1535601977491)]


跨域步骤(重要)

  • 1.通过script src= 向服务器发送一个请求. 在发送请求过程中,把function 的名称作为参数传送给服务器.
<script src="http://datainfo.duapp.com/shopdata/getGoods.php?callback=callback">
  • 2.在前端定义一个方法
function callback(args) {
    console.log(args);
}
  • 3.服务器接收 callback值.在返回时,接收参数后面拼接括号.如果想要传递数据,就把数据放到括号中.
 $res = $_GET['callback'];
 echo $res."('我是服务的数据')";// call('我是服务的数据')
  • 4.浏览器就会解析执行服务器返回的js代码
callback('我是服务的数据');

讲解

1.1.定义jsonp.php

echo "fn()";
echo  "alert('hello')";

1.2.html 导入jsonp.php,定义函数

<script src="jsonp.php"></script>
<!--
    如果服务器返回的是js代码,那么浏览器就会直接执行js代码
    借助浏览器的特性来实现跨域
-->
<script>
    function fn() {
        alert("执行了前端alart");
    }
</script>

2.1.带参数请求地址

<script src="jsonp.php?callback=fn"></script>

2.2.php接收参数

$res = $_GET['callback']; //注意:res 就是 fn
echo $res.'()'; // fn()

3.php 返回数据

$res = $_GET['callback'];
echo $res."('我是服务的数据 sk666')";

4.1.script 加载网址

http://datainfo.duapp.com/shopdata/getGoods.php
<script src="http://datainfo.duapp.com/shopdata/getGoods.php?callback=callback"></script>

4.2.修改方法名

function callback(args) {
console.log(args);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容