Angular Headers 网页 API

Angular Headers Web API

我试图在每个 api 调用中添加 X-APIKeys header,但它们只有 curl 中的示例。我试过:

 var accessKey = "gdgfdgdfgdgdgfdgdfgfdgfdgdgh";
 var secretKey = "ggdgfdgdggtet565645654654654";
 $http.get("/information",{
  headers:{ {"X-APIKeys": accessKey, secretKey}}
    ) 

我也试过为配置做一个拦截器:

 config.headers['X-ApiKeys'] = {accessKey, secretKey}

X-APIKeys 的结构是我认为导致我出现问题的原因。我提供了他们正在寻找的 http headers 的图片。

完整请求Header:

  Accept:*/*
  Accept-Encoding:gzip, deflate, sdch
  Accept-Language:en-US,en;q=0.8
  Access-Control-Request-Headers:accept, x-apikeys
  Access-Control-Request-Method:GET
  Connection:keep-alive
  Host:
  Origin:http://localhost:60531
  Referer:http://localhost:60531/
  User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36

这里是来自尝试 Tomislav 示例的请求 header:

试试这个:

$http.get("/information",{
    headers: { 'X-ApiKeys': 'accessKey=' + accessKey+'; secretKey='+secretKey+';' }})

你应该做一个拦截器,因为可能正在进行一些 CORS 协商(选项?)。这保证了所有请求都有 header。当然如果只有对某个主机的请求应该有header,你必须有一个决定是否包含的if。 Config 只是一项服务,您可以保留 api 键值。如果您不想这样做,只需对值进行硬编码。

'use strict';

var app = angular.module('App');

app.factory('apiKeyInterceptor', [function (Config) {

    var header = 'accessKey=' + Config.accessKey+'; secretKey='+ Config.secretKey+';'
    return {
      request: function (config) {
        config.headers = config.headers || {};

        config.headers['X-ApiKeys'] = header;
        return config;
      }
    };
  }]);

var app = angular.module('App', []).config(function($httpProvider) {
    $httpProvider.interceptors.push('apiKeyInterceptor');
}

还要小心并检查它们是指 curl 命令中的 {} 字面意思还是占位符。