大家好,今天我们学习了js的跨域请求的解决方案,由于JS中存在同源策略,当请求不同协议名,不同端口号、不同主机名下面的文件时,将会违背同源策略,无法请求成功!需要进行跨域处理!

方案一、后台PHP进行设置,

前台无需任何设置,在后台被请求的PHP文件中,写入一条header

header("Access-Control-Allow-Origin:*");

表示允许那些域名请求这个PHP文件*表示所有域名都允许

这是最佳的解决方案,因为是在后台进行设置,不对外公开,所以更加安全,

方案二、使用src请求+JSONP实现跨域

* ①拥有src属性的标签自带跨域功能,所有可以使用script标签的src属性请求后台数据。

* <script src="http://127.0.0.1/json/php" type="text/javascript" charset="utf-8"> </ script>

* ②由于src在加载数据成功后,会直接将加载内容放入到script标签中,

* 所以后台直接返回JSON字符串将不能再script标签中解析。。

* 因此后台应该返回给前台一个回调函数名,并将json字符串作为参数调用

* 从后台PHP文件中国返回:echo "callBack({$json})";

③前台接收到返回的回调函数时,回调函数将直接在script标签中调用,因此需要声明这样一个回调函数,作为请求成功的回调。

eg:

$.ajax({
method:"post",
url:"http://127.0.0.1/json/php",
dataType:"jsonp",
success:function(data){
console.log(data);
console.log($str[1].name)
} });

方案三、JQuery的AJax实现JSONP

①在ajax请求是,设置datatype为"jsonp"

②后台返回是,依然需要返回回调函数。但是,ajax在发送请求是惠默认使用get请求回调函数名发给后台,后台可以使用echo $_GET['callback']取出回调函数名,这样前台可以使用ajax的success函数作为成功的回调。

echo "{$_GET['callback']}({$str})";

③后台返回以后,Ajax依然可以使用success作为成功的回调函数;

success:function(data){}

当然后台也可以随便返回一个回调函数名,echo"callBack({$str})",

前台只要请求成功,就会自动调用这个函数。类似以第二条的②③步

<script src="http://127.0.0.1/json/php" type="text/javascript" charset="utf-8">

最新文章

  1. easyui combobox点击输入框弹出下拉框
  2. sharepoint多个NLB的web前段如何进行文件同步?
  3. 在linux下安装tesseract-ocr
  4. 让用户打开你app的位置功能
  5. iOS FMDB
  6. 在MyEclipse8.5中配置Tomcat6.0服务器
  7. 带项目的一些体会以及合格的 Leader 应该具备什么特质?(转)
  8. Vulkan Tutorial 15 Framebuffers
  9. linux学习(十)find命令、Linux文件后缀名、Linux和windows文件互传
  10. oracle ebs应用产品安全性-安全性规则
  11. Linux运维高级-核心知识提高
  12. vue学习目录 vue初识 this指向问题 vue组件传值 过滤器 钩子函数 路由 全家桶 脚手架 vuecli element-ui axios bus
  13. WiFi-ESP8266入门http(2-2)文件系统-复杂结构的网页 + 文本框交互WIFI信息
  14. react-router的坑
  15. GitHub学习一-本地电脑与GitHub绑定
  16. webGL之three.js入门4--ThreeJS Editor入门篇
  17. stardog 基本试用(社区版)
  18. ASP.NET 关于GridView 表格重复列合并
  19. 关于onscroll函数兼容各浏览器的方法分析
  20. cocos2d 中使用jni Java 调用 C++ 方法

热门文章

  1. 利用PN532读取二代证UID
  2. 【JavaScript】设计模式-module模式及其改进
  3. 基于NIO和BIO的两种服务器对比
  4. MySQL主从同步和读写分离的配置
  5. 【bzoj1103】【POI2007】【大都市】(树状数组+差分)
  6. java中的finally用return也挡不住
  7. 用html+css+js做打地鼠小游戏
  8. 张高兴的 Xamarin.Android 学习笔记:(三)活动生命周期
  9. STM32F10x -- 利用IIC协议操作AT24C02
  10. Android基础知识03—Activity的基本用法