很多站长朋友们都不太清楚php防止ajax接口,今天小编就来给大家整理php防止ajax接口,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 ajax提交给php后,php任何的输出操作都会被ajax发回到客户端me?如何阻止? 2、 关于php和ajax的安全性问题,求大神指点。 3、 php 怎么判断是否ajax请求 4、 一个php网页,多个ajax请求,怎么处理? 5、 如何防止ajax请求的参数被拦截修改 6、 php 怎样防止跨域提交表单,表单为ajax方式提交 ajax提交给php后,php任何的输出操作都会被ajax发回到客户端me?如何阻止?前台的ajax也仅仅是发送了一个请求,监听请求成功或者失败之后的回调。PHP处理这个请求,其中处理过程可以返回东西,前台的ajax如果设置了回调,就能接收PHP返回的东西。如果ajax的回调不做处理,那么基本就能解决了。
关于php和ajax的安全性问题,求大神指点。我想说的是你用了post请求,get_identity.php也是还是任何人都可以请求的,还是没有解决根本问题,
你可以使用$_SERVER['HTTP_REFERER']来判断是否是message.php请求过来的.当然安全是相对的.
php 怎么判断是否ajax请求思路:在你进行ajax请求的时候,设置一个文件头信息的变量,在php端判断这个信息是否存在以及是否等于自己设置的值,就可以知道是否是ajax请求了。
做法:js端发送头信息
对象.setRequestHeader("变量名","变量值");
如 xmlHttp..setRequestHeader("X_REQUESTED_WITH","XMLHttpRequest");
php端接受信息,注意此时接受的变量存在 $_SERVER['HTTP_变量名'];中,
如上面的例子则为$_SERVER['HTTP_X_REQUESTED_WITH'];
echo isset($_SERVER['HTTP_X_REQUESTED_WITH'])($_SERVER['HTTP_X_REQUESTED_WITH']=='XMLHttpRequest')?'it is ajax':'it is not ajax';
注释:js和jquery中有些许不同,自己注意一下,再者变量名字不要冲突了
附加:如果这是你自己的网站,你只是自己区别一下的话,这样就可以了,但是,它是防止不了别人盗用你的ajax数据的,因为这些都是可以模拟的,一个好的方法是设计session验证之类的。
一个php网页,多个ajax请求,怎么处理?各个ajax是互相不干扰的,你把ajax封起来嘛当一个函数,然后用事件去调用就可以了
我的第十题和第十一题都调用了ajaxUpdate函数,它就是我封装的ajax的请求函数,第一个参数是接收的urldier个参数是传递的数据,默认是post方法发送,第三个参数是异步传输的参考值我选定是false就是同步传输,这是用jquery写的
如何防止ajax请求的参数被拦截修改jquery ajax是个很常用接口,而在请求时候,可能存在响应401的情况(身份认证过期或未登录),比较容易出现在混合应用上,如何进行身份认证,重发失败请求,还是值得注意的。
ajax请求有两种方式
1. 回调
最常写的方式,成功失败处理以回调方式传入。
$.ajax({ ajax参数... success : xxxxxx error: xxxxxx });
2. Deferred方式
Deferred模式我在《js异步编程》有说明, ajax调用本身返回就是一个Deferred对象,成功失败回调不以参数传入。
$.ajax({ ajax参数... }).then(function(res){ //成功处理片段 },function(err){ //失败处理片段 });
既然有这两种方式,那应对处理401的方式也是有两种。
401处理的两种方式
1. 回调
这种方式的处理比较简单,在失败回调里面判断401,如果是则进行身份认证,成功重发请求。
function getXXXX(type, url, data, success, error){ $.ajax({ ajax参数... success : xxxxxx error : function(xhr,textStatus,errorThrown){ if (xhr.status == 401) { 刷新身份认证方法(function(){ getXXXX(type, url, data, success, error); }); } else{ // 调用外部的error error error(xhr,textStatus,errorThrown); } } }); }
2. Deferred方式
这种方式目前我找到的处理方式需要修改jquery源码。
//全局设置一个方法 $.ajaxSetup({ authError : function(callback){ 刷新身份认证方法( function(){ callback callback(); }); } }); //jquery2.1.4版本源码,大概是8261行 // Success/Error if ( isSuccess ) { deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); } else { if(( jqXHR.status == 401 || jqXHR .status == 403) callbackContext.authError){ callbackContext.authError(function (){ state = 0; jqXHR.setRequestHeader( "Authorization", XXXXXX); jqXHR.readyState = 1; try { state = 1; transport.send( requestHeaders, done ); } catch ( e ) { // Propagate exception as error if not done if ( state < 2 ) { done( -1, e ); // Simply rethrow otherwise } else { throw e; } } }); return; } else { deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); } }
这里说下为什么不能像第一种方式那样进行请求。
有两个原因:
1. then这种链式写法,导致这请求的回调不是在参数里,而是在jQuery.Callbacks一个optionsCache全局变量里,我们无法在ajax error里拿到回调函数进行重发。
2. 写在then里的回调触发一次就会被销毁,当触发了error时,回调执行后就销毁。
最后的处理方式就是在要触发error之前,拦截401的错误,重新进行身份认证,然后重置状态,重发请求。
以上这篇当jquery ajax遇上401请求的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
php 怎样防止跨域提交表单,表单为ajax方式提交常用方法:
①生成随机hash值,存储session,提交的时候要提交hash值,然后判断提交的hash是否正确;
②验证来路网页的域名,空域名或者不是自己的都返回错误。
关于php防止ajax接口的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php防止ajax接口 php防止接口多次请求的详细内容...