设置请求头信息的不同方式

原文:http://blog.csdn.net/magiclr/article/details/49643277

在AngularJs中有三种方式可以设置请求头信息:

1、在http服务的在服务端发送请求时,也就是调用http()方法时,在config对象中设置请求头信息:

    $http.post(‘/somePath‘ , someData , {
        headers : {‘Authorization‘ : authToken}
    }).success(function(data, status, headers, config) {
        //...
    }).error(function(data, status, headers, config ) {
        //...
    });

这种方法的好处是针对不同路径的请求,可以个性化配置请求头部,缺点就是,不同路径请求都需要单独配置。

2、第二种设置请求头信息的方式就是在$httpProvider.defaults.headers属性上直接配置。

ngular.module(‘app‘, [])
.config(function($httpProvider) {
    $httpProvider.defaults.headers.common = { ‘My-Header‘ : ‘value‘ }
})

$httpProvider.defaults.headers有不同的属性,如common、get、post、put等。因此可以在不同的http请求上面添加不同的头信息,common是指所有的请求方式。

这种方式添加请求头信息的优势就是可以给不同请求方式添加相同的请求头信息,缺点就是不能够为某些请求path添加个性化头信息。

3、第三种设置请求头信息的地方是$httpProvider.interceptors。也就是为请求或响应注册一个拦截器。使用这种方式首先需要定义一个服务。

myModule.factory(‘authInterceptor‘, function($rootScope,  $cookies){
    return {
        request: function(config){
            config.headers = config.headers || {};
            if($cookies.get(‘token‘)){
                config.headers.authorization = ‘Bearer ‘ + $cookies.get(‘token‘);
            }
            return config;
        },
        responseError: function(response){
            // ...
        }
    };
})

然后把上面定义的服务注册到$httpProvider.interceptors中。

.config(function($httpProvider){
    $httpProvider.interceptors.push(‘authInterceptor‘);
})

这样,对于每次请求,不论是get还是post、put。我们都会在请求头信息中加入authorization属性。这种方式在处理验权、授权方面很有用的。缺点就是不能够为特定的请求方式添加请求头信息。

时间: 2024-10-05 21:59:18

设置请求头信息的不同方式的相关文章

JQuery Ajax 设置请求头信息application/json

今天有个api后台接application/json格式的 在Jquery里$.ajax默认是contentType: application/x-www-form-urlencoded; charset=UTF-8 此格式为表单提交格式,数据为 k1=v1&k2=v2的格式 虽然你可以在data设置的是{k1:v1,k2:v2}不过在提交的时候还是会转换成k1=v1&k2=v2 所以我就在参数里加上了contentType: 'application/json;charset=UTF-8

ajax中的setRequestHeader设置请求头

1.问题引发点: 前不久发现一个问题: 前端并没有设置请求头信息里面的Accept-Encoding:gzip...但是在请求头中可以明显的看到Accept-Encoding:gzip, deflate, sdch,并且我尝试修改这个请求头,发现 不 生 效: 2.XMLHttpRequest对象提供了一个设置请求头的方法:setRequestHeader,对应的jQuery可以再beforeSend回调里面设置请求头: $.ajax({ type: "GET", url: "

LoadRunner获取WEB请求头信息的方法:REQUEST、RESPONSE(引)

今天发现LoadRunner两个"内置变量": 1.REQUEST,用于提取完整的请求头信息. 2.RESPONSE,用于提取完整的响应头信息. 响应头信息用可用其它方式实现,但请求头信息还真不知道可以这样拿到.太隐蔽了吧! 注意,这两个变量仅在请求前使用web_save_header注册使用.示例如下: Action(){web_set_max_html_param_len("262144");// 默认最大长度为256web_reg_save_param(&qu

http请求头信息

1.HTTP Request Header 请求头信息对照表 Header 解释 示例 Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html Accept-Charset 浏览器可以接受的字符编码集. Accept-Charset: iso-8859-5 Accept-Encoding 指定浏览器可以支持的web服务器返回内容压缩编码类型. Accept-Encoding: compress, gzip Accept-Language 浏览器可接

JavaScript之ajax的作用、流程以及如何设置请求头

什么是ajax?它的作用是什么?它的流程好处又有那些?如何设置请求头呢????????(嘻嘻,不知道请往下看哦): 1)什么是ajax呢? ajax即"Asynchronous Javascript And XML"(异步的JavaScript和xml),是指一种创建交互式网页应用的网页开发技术. 2)ajax的作用又是什么呢? 通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 通俗的来讲:它是一种

axios设置请求头内容

axios设置请求头中的Authorization 和 cookie 信息: GET请求 axios.get(urlString, { headers: { 'Authorization': 'Bearer ' + token, "Cookie" : 'sessionId=' + sessionId + '; recId=' + recId, ... }, params: { param1: string, param2: string }, ... } ) .then(res =&g

设置请求头解决浏览器同源问题

思想: 添加过滤器 设置请求头 代码如下 package com.deppon.vas.common.framework.cors; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servl

利用volley进行http设置请求头、超时及请求参数设置(post)

这里以post请求说明,get请求相似设置请求头及超时. 1.自定义request,继承com.android.volley.Request 2.构造方法实现(basecallback,为自定义的监听,实现Response.Listener,ErrorListener接口)--post请求 public BaseRequest(String url,String params, BaseCallback<T> callback)      {   super(Method.POST, url,

视图函数获取请求头信息

视图函数获取相关信息请求头信息 Django 的request 中封装的了所有的信息,之前我们只是使用了POST,GET的方法来获取数据 查看request类 def index(request): print(type(request)) return HttpResponse('ko') #输出 <class 'django.core.handlers.wsgi.WSGIRequest'> 导入这个类看看有什么方法 def index (request): from django.core