ajax跨域请求解决方案
大家好,今天我们学习了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">
ajax跨域请求解决方案的更多相关文章
- java、ajax 跨域请求解决方案('Access-Control-Allow-Origin' header is present on the requested resource. Origin '请求源' is therefore not allowed access.)
1.情景展示 ajax调取java服务器请求报错 报错信息如下: 'Access-Control-Allow-Origin' header is present on the requested ...
- ajax跨域请求解决方案 CORS和JSONP
什么是跨域: 只要协议.域名.端口有任何一个不同,都会被当成不同的域.而由于浏览器的同源策略(同源策略:域名.协议.端口均相同),浏览器之间要隔离不同域的内容,禁止互相操作,不能执行其他网站的js.所 ...
- ajax 跨域请求解决方案
1.为什么出现跨域: 前端和后端同一个项目下,ajax请求的地址是localhost同一个端口是话,是不会出现跨域问题的,所以相反前端和后端分开时,ajax请求的地址或者端口不是跟后台相同时就会出现跨 ...
- springboot:ajax跨域请求解决方案
Cors详细介绍请看阮一峰的跨域资源共享 CORS 详解:http://www.ruanyifeng.com/blog/2016/04/cors.html SpringBoot使用CROS解决跨域问题 ...
- 有关Ajax跨域请求的解决方案
前言 最近博主在赶项目进度.所以微信二次开发那边的博文一直没有更新.后续时间会慢慢记录这个学习历程的.来年公司要开发微信小程序.到时也会记录一下历程. 闲话少说,今天在工作中遇到了SpringMVC接 ...
- [转载]JQuery的Ajax跨域请求的解决方案
今天在项目中需要做远程数据加载并渲染页面,直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究,发现JQuer ...
- ajax跨域请求的解决方案
一直打算改造一下自己传统做网站的形式. 我是.Net程序员,含辛茹苦数年也没混出个什么名堂. 最近微信比较火, 由于现在大环境的影响和以前工作的总结和经验,我打算自己写一个数据,UI松耦合的比较新潮的 ...
- JQuery的Ajax跨域请求原理概述及实例
今天在项目中需要做远程数据加载并渲染页面,直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究,发 JQuer ...
- jquery ajax跨域请求详解
本文章来给大家详细jquery中的ajax跨域请求, 在JQuery对于Ajax的跨域请求有两类解决方案,不过都是只支持get方式.分别是JQuery的jquery.ajax jsonp格式和jque ...
随机推荐
- AngularJS指南文档
点击查看AngularJS系列目录 转载请注明出处:http://www.cnblogs.com/leosx/ 核心概念 模板 在Angular应用当中,我们的工作就是将服务器的数据填充到客户端页面模 ...
- mac 安装Beautiful Soup
Beautiful Soup是一个Python的一个库,主要为一些短周期项目比如屏幕抓取而设计.有三个特性使得它非常强大: 1.Beautiful Soup提供了一些简单的方法和Python术语,用于 ...
- Robberies hdu 2955 01背包
Robberies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- CodeForces 242E二维线段树
E. XOR on Seg ...
- 命令行参数处理-getopt()和getopt_long()
在实际编程当中,自己编写代码处理命令行参数是比较麻烦且易出错的.一般我们会直接使用getopt()和getopt_long()函数,下文将介绍具体的使用方法. getopt() getopt()用于处 ...
- ubuntu中切换到root账号方法
ubuntu如何切换到root用户身份? 前面小编分享了ubuntu怎么开启root用户,下面小编来分享如何切到到root用户 方法/步骤 按照下面的方式打开终端工具,或者使用终端工具的快捷键Ctrl ...
- hdu 4057--Rescue the Rabbit(AC自动机+状压DP)
题目链接 Problem Description Dr. X is a biologist, who likes rabbits very much and can do everything for ...
- 自动化双向数据绑定AngularJs---入门
前 言 AngularJS,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款产品当中.AngularJS有着诸多特性,最为 ...
- Golang:使用自定义模板发送邮件
https://medium.com/@itsHabib/sending-emails-with-go-using-a-custom-template-ae863b65a859 作者:Michael ...
- 第六章 JDBC
第一章 JDBC 一.JDBC的简介 1.什么是JDBC JDBC是java数据库连接(java database connectivity)技术的简称,它充当了java应用程序与各个不同数据库之间进 ...