`
liyonghui160com
  • 浏览: 762094 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ajax请求中设置特殊的RequestHeader

    博客分类:
  • java
阅读更多

 

 

.ajax请求,没有跨域,设置http header头部

$.ajax({

    type: "post",

    url:"http://abc.cc/qrcode3/index.php/home/index/testpost",

    dataType: "json"

    data: {"key":"value"},

    // headers : {'Authorization':'Basic bmVvd2F5Oe4lb3dheQ=='},

    beforeSend: function(xhr) {

        xhr.setRequestHeader("Authorization", "Basic bmVvd2F5Oe4lb3dheQ==");

    },

    success: function(data){ alert(data); },

    error: function(data){ alert("error"); } ,

});

设置header头部有两种方法:
1.headers : {‘Authorization’:’Basic bmVvd2F5Oe4lb3dheQ==’}

多个头部用逗号‘,’分隔开
2.定义beforeSend方法
beforeSend: function(xhr) {
xhr.setRequestHeader(“Authorization”, “Basic bmVvd2F5Oe4lb3dheQ==”);
}


.ajax跨域请求,没有设置http header,

$.ajax({

    type: "post",

    url:"http://abc.cc/qrcode3/index.php/home/index/testpost",

    dataType: "jsonp"

    data: {"key":"value"},

    // headers : {'Authorization':'Basic bmVvd2F5Oe4lb3dheQ=='},

    success: function(data){ alert(data); },

    error: function(data){ alert("error"); } ,

});

服务器端代码:

public function testpost() {

    $data = $_GET['key']?$_GET['key']:"123456";

    $callback = $_GET['callback'];

    if(!preg_match("/^[0-9a-zA-Z_.]+$/",$callback)){

exit('参数错误!');

    }

    echo $callback.'('.json_encode($data).')';

    exit;

}

跨域ajax访问,使用jsonp,返回数据格式如:abc({'key':'value','key2':'value2'}),形如一个函数调用,参数为一个json数据格式

.ajax跨域请求,设置header头部的解决办法

跨域无法直接设置header,如果跨域了还要设置http头,可以使用以下方法。

jquery实现代码如下:

$(".get_data").click(function() {

    var key = $("#user").val() + ":" + $("#pass").val();

    //base64编码

    var authKey = base64encode(key);

    $.ajax({

        type: 'GET',

        dataType: 'json',

        url: "http://abc.cc/qrcode3/home/index/testajax",

        headers: {'Authorization': 'Basic '+authKey,"lpy":"lpy"},

        success: function(data) {

            alert(data.msg+"--"+data.user);

        },

        error:function(data){

            alert("error");

        }

    });

});

 

php实现代码如下:

public function testajax() {

    // 指定允许其他域名访问  

    header('Access-Control-Allow-Origin:http://abc.cn');  

    // 响应类型  

    header('Access-Control-Allow-Methods:POST,GET');  

    // 响应头设置,允许设置Authorization和lpy这两个http头

header('Access-Control-Allow-Headers:Authorization,lpy');

 

    //获取所有的http请求头

    $header = apache_request_headers();

$data['lpy'] = $header['lpy'];

//获取authorization中的用户名和密码,并判断

    $data['user'] = $_SERVER['PHP_AUTH_USER'];

    $data['pass'] = $_SERVER['PHP_AUTH_PW'];

    if($data['user'] == "neoway" && $data['pass'] == "neoway"){

        $data['msg'] = "ok";

    }else{

        $data['msg'] = "errorjsonp";

    }

echo json_encode($data);

}

总结:
ajax跨域是不能设置http header的,为了能够设置header,需要在服务器php代码中添加header(‘Access-Control-Allow-Origin:http://abc.cn’); 允许http://abc.cn访问服务器abc.cc,再通过设置header(‘Access-Control-Allow-Headers:Authorization,lpy’);把需要设置的http header属性添加进去,在jquery代码中通过header来设置响应的属性值,在http的请求头中就可以看到 Authorizationlpy的请求头,服务器php端通过$header = apache_request_headers()获取http header的数组,继而可以获取到lpy的请求头的值。

分享到:
评论

相关推荐

    如何在ajax请求中设置特殊的RequestHeader

    如何在ajax请求中设置特殊的RequestHeader示例

    ajax 缓存 问题 requestheader

    当第一次切换选项,也就是提交请求的时候一切都是正常的,但是如果切换相同选项因为浏览器的缓存原因,将不会走到server,实际得到的动态信息是从缓存中去取的。造成后台的逻辑没有被走到。代码如下: aspx相关代码...

    vue项目使用axios发送请求让ajax请求头部携带cookie的方法

    今天小编就为大家分享一篇vue项目使用axios发送请求让ajax请求头部携带cookie的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    Ajax课件学习(免费)

    2、在ajax请求中,发送首部信息的工作可以由setRequestHeader完成。 3、参数header:首部的名字 参数value:首部的值 4、如果用post请求向服务器发送数据,需要将”Content-type”的首部设置为”application/x-...

    微信小程序开发问答《五十一》post请求服务器收不到参数 & 小程序ajax请求问题

    1、微信小程序 post请求服务器接收不到参数 解决办法:加上 "Content-Type": "application/x-www-form-urlencoded"   [javascript] view plain copy   wx.request({     url: 'https://....php',   ...

    SpringMVC示例

    RequestParam 注解、RequestHeader 注解、CookieValue 注解、使用POJO作为参数(属性与页面自动匹配及级联)、使用Servlet原生API作为参数、处理模型数据(ModelAndView、Map、SessionAttributes 注解)、...

    SpringMVC Employee Demo

    本次实践内容包括RequestMapping关键字修饰类和方法(请求方式、请求参数&请求头、Ant风格路径)、PathVariable注解、HiddenHttpMethodFilter 过滤器(将Get请求转换成PUT、DELETE请求)、RequestParam 注解、...

    在Js页面通过POST传递参数跳转到新页面详解

    最近在工作中遇到一个需求,有个页面 a.vm,对 ajax 请求的结果进行判断后,获取结果里面的数据传递给一个 URL(b.htm),跳转到新的页面 b.htm。 遇到的问题 因为一开始是 GET 请求,所以当传递的数据过大的时候,...

    微信小程序网络请求封装示例

    网络请求小程序提供了wx.request, 仔细看一下 api,这不就是n年前的 $.ajax 吗,好古老啊。 // 官方例子 wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '' , y: '' }, header: ...

    微信小程序的wx.request API和获取openId、sessionKey的方法【原创】 ...

    最近看了一些微信小程序的教程,在微信小程序中我们用wx.request来请求数据。先简单介绍一下wx.request API,因为获取openId、sessionKey也需要用这个API。 wx.request就是ajax,与后台交互请求数据,基础参数和用法...

    乐优商城.xmind

    当浏览器发现发现的ajax请求是简单请求时,会在请求头中携带一个字段:Origin 如果服务器允许跨域,需要在返回的响应头中携带下面信息 Access-Control-Allow-Origin:可接受的域,是一个具体域名或者*,代表任意 ...

    java web留言板

    这种传统的HTTP request d的模式带来很明显的缺点 – 浏览器需要不断的向服务器发出请求(request),然而HTTP request 的header是非常长的,里面包含的数据可能只是一个很小的值,这样会占用很多的带宽。 而最比较新...

    scrapy中的headers,Request,response

    文章目录headersRequestresponse headers 为了让程序请求模仿的更像浏览器,需要在headers请求头上添加一些参数 headers请求头的部分重要参数: ...x-requested-with :XMLHttpRequest (是Ajax 异步请求)

    完美解决axios跨域请求出错的问题

    错误信息: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-...随着前端框架的发展,如今前后端数据分离已经成了趋势,也就是说,前端只需要用ajax请求后端的数据合

    ajaxCrypto:编码Http请求数据并解码PHP post-get

    编码Ajax请求数据并解码PHP后置 范例影片: : JavaScript请求编码数据 < script src =" ajaxCrypto.js " > </ script > < script > ajaxCrypto ( "post-or-get" , "test.php" , { isim : ...

    Python爬取智联招聘数据分析师岗位相关信息的方法

    在Header中有Request URL,我们需要通过找寻Request URL的特点来构造这个请求网址, 点击Preview,可以看到我们所需要的信息就存在result中,这信息基本是json格式,有些是列表; 下面我们通过Python爬虫来爬取上面...

    C# websocket及时通信协议的实现方法示例

    这种传统的HTTP request 的模式带来很明显的缺点 – 浏览器需要不断的向服务器发出请求,然而HTTP request 的header是非常长的,里面包含的数据可能只是一个很小的值,这样会占用很多的带宽。 而比较新的技术去做...

    Allow-CORS_-Access-Control-Allow-Origin_v0.1.2.crx

    允许CORS:通过Access-Control-Allow-Origin,您可以轻松地在Web应用程序中执行跨域Ajax请求。 只需激活插件并执行请求。默认情况下(在JavaScript API中),CORS或跨源资源共享在现代浏览器中被阻止。安装此加载项...

    如何将一个TXT文档里内容导入到文本框里

    ObjFile=trim(request("filesname")) '从文浏览控件中获取 IF objFSO.FileExists(ObjFile) then Set objText = objFSO.OpenTextFile(ObjFile,1) '循环读取数据 k=0 While not objText.AtEndOfStream '到...

    微信小程序开发问答《七十七》encryptedData解密 & canvas 设置opacity:0无效 ... ..

    1、weapp的wxss选择器中 > 和 * 有什么替代方案吗?   答:不建议使用关系选择器,...答:wx.request知道吧,类似于ajax,他有几个参数,url你懂的,header请求的header,还有一个success一个成功的回掉函数接受一个行

Global site tag (gtag.js) - Google Analytics