【问题标题】:Configuration for vue-resource root and authorizationvue-resource root 和授权的配置
【发布时间】:2016-03-30 17:09:30
【问题描述】:

我正在查看描述如何设置配置的 vue-resource 的以下文档:https://github.com/vuejs/vue-resource/blob/master/docs/config.md

它说用一个通用的授权值设置你的标题:

 Vue.http.headers.common['Authorization'] = 'Basic YXBpOnBhc3N3b3Jk';

我猜这个“Basic YXBpOnBhc3N3b3Jk”值只是一个例子,但是这个值有什么用,应该用什么来代替它?

在同一页面上,我还看到了“root”的设置:

 Vue.http.options.root = '/root';

我理解这是指网络应用程序的网络 URL。但是,为什么 vue-resource 需要我告诉它这个值呢?它有什么用?

【问题讨论】:

    标签: javascript vue.js vue-resource


    【解决方案1】:

    通过向 Vue.http.headers.common 对象添加标头,您是在告诉 vue-resource 在每个请求中添加这些标头。

    您还可以为每个请求添加标头:

    http({
     url: '/someUrl', 
     method: 'GET',
     headers: {
       Authorization: 'Basic YXBpOnBhc3N3b3Jk'
     }
    })
    

    关于示例中Authorization 标头的值:它是带有用户名/密码的base64 编码字符串。

    window.atob('YXBpOnBhc3N3b3Jk') // => "api:password"
    

    如果您在使用 vue-resource 时需要使用基本身份验证,您应该提供自己的用户名/密码。

    请注意,使用您的应用程序的每个人都可以查看用户名/密码。 有关基本身份验证的更多信息,请参阅https://en.wikipedia.org/wiki/Basic_access_authentication。

    根属性可以是 REST 服务的主要端点。 而不是:

    http({
     url: 'http://api.domain.com/v1/someRoute'
    });
    

    你可以设置根端点:

    Vue.http.options.root = 'http://api.domain.com/v1'
    
    // will call http://api.domain.com/v1/someRoute
    http({
     url: '/someRoute'
    });
    

    【讨论】:

    • 感谢您的好评:)
    • 需要注意的是,如果您向'/someRoute' 发出http 请求,它将覆盖 root 设置。您必须请求 'someRoute' 才能使用您设置的根。
    • 感谢@Jeff 正是我所追求的。
    【解决方案2】:

    如果您想以全局方式设置标头身份验证,请使用 inceptor

    Vue.http.interceptors.push(function(request, next) {
    
        request.headers['Authorization'] = 'Basic abcd' //Base64
        request.headers['Accept'] = 'application/json'
        next()
    });
    

    并使用选项凭据:

    Vue.http.options.credentials = true;
    

    【讨论】:

    猜你喜欢
    • 2021-01-29
    • 2016-03-17
    • 2015-04-24
    • 2014-07-26
    • 2014-12-23
    • 1970-01-01
    • 2011-05-21
    • 2020-09-03
    • 1970-01-01
    相关资源
    最近更新 更多