Недействительная пара ключ=значение (отсутствует знак равенства) в заголовке авторизации

При обращении к API от Postman я получаю эту ошибку.

Детали API:

URL-адрес:

https://account-perf.myglobal.com/v1/users/00uk0khprrME7gZOU0h7/credentials/change_password

Заголовок:

Content-Type:application/json
Authorization:Bearer n7mbkw74jsubd7rauhptdnre

Тип:

СООБЩЕНИЕ

Тело:

{"password":"Baddy125@","token":"eyJhbGci...."}

Редактировать 1:

Вызов веб-сервиса для генерации токена

URL-

https://api-perf.myglobal.com/rest/oauth2/v1/токен

Тип-

СООБЩЕНИЕ

Тело-

client_id:abcd
client_secret:xyz
grant_type:client_credentials

n7mbkw74jsubd7rauhptdnre как вы сгенерировали это значение?
Chetan 30.03.2019 07:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
1
14 575
4

Ответы 4

Проанализируйте и проверьте путь запроса, если запрос неверен, эта ошибка выдается на шлюзе API. Я наступил на ту же ошибку, когда исправил параметры запроса, все заработало.

Дайте мне знать.

У меня было это всякий раз, когда вызывался любой необработанный метод или ресурс конечной точки. Моя установка представляет собой шлюз API с определенными ресурсами (например, /myendpoint) и определенными методами для этих конечных точек (например, GET).

Чтобы исправить это, я создал лямбда-функцию Node.js, которая только что вернула ошибку 404. Затем я добавил любой метод ANY в корень конечных точек / и указал его как прокси-функцию Lambda для ЛЮБЫХ методов.

Затем я добавил прокси-ресурс, например. /{proxy} -- есть флажок, который вы можете установить при создании ресурса, чтобы передать его прокси. Метод ANY для этого ресурса, указывающий на ту же функцию Lambda, развертывание API, и все готово.

Теперь вместо ошибки токена носителя авторизации я получаю правильную ошибку HTTP 404.

@Matt H - Это довольно хорошая идея, которая вдохновила меня на еще одну.

Предполагая, что все остальные пути в API указаны явно, я создал путь по умолчанию /{proxy+}, который будет возвращать http 404, ресурс сообщения не найден. Вместо использования лямбда я смог создать фиктивный ответ, поэтому нет никаких затрат на то, чтобы заставить лямбду вернуть ответ.

Я создал свои API через спецификацию Open API. Вот как мой YAML для реализации хотел бы

  /{proxy+}:
    x-amazon-apigateway-any-method:
      responses:
        404:
          description: "404 response"
          content: {}
      x-amazon-apigateway-integration:
        responses:
          404:
            statusCode: "404"
            responseTemplates:
              application/json: "{\"message\":\"resource not available\"}"
        requestTemplates:
          application/json: "{\"statusCode\": 404}"
        passthroughBehavior: "when_no_templates"
        type: "mock"

Serverless также имеет возможность указать встроенный фиктивный ответ. Ниже может быть образец:

functions:
  default:
    handler: handler.default
    events:
      - http:
          path: hello
          cors: true
          method: get
          integration: mock
          request:
            template:
              application/json: '{"statusCode": 404}'
          response:
            template: $input.path('$')
            statusCodes:
              404:
                pattern: '' #default method
                template:
                  application/json: '{"statusCode": 404, "message":"resource not found"}'

бессерверный документ: https://www.serverless.com/framework/docs/providers/aws/events/apigateway/#custom-response-templates

Мне удалось сделать это, проксировав маршрут ANY /{proxy+} к лямбде, которая всегда будет отвечать HTTP 404.

Поскольку все остальные маршруты настроены точно, этот ANY /{proxy+} маршрут действует как маршрут по умолчанию и будет перехватывать любой несоответствующий запрос.

Вот как я это сделал с CloudFormation:

Parameters:
    RestAPI:
        Type: String
    RestApiRootResourceId:
        Type: String
    LambdaName:
        Type: String
    Path:
        Type: String

RootResource:
    Type: AWS::ApiGateway::Resource
    Properties:
      RestApiId: !Ref RestAPI
      ParentId: !Ref RestApiRootResourceId
      PathPart: !Ref Path
ProxyResource:
    Type: 'AWS::ApiGateway::Resource'
    Properties:
      RestApiId: !Ref RestAPI
      ParentId: !Ref RestApiRootResourceId
      PathPart: "{proxy+}"
AnyMethod:
    Type: 'AWS::ApiGateway::Method'
    Properties:
    RestApiId: !Ref RestAPI
    ResourceId: !Ref ProxyResource
    HttpMethod: ANY
    Integration:
        IntegrationHttpMethod: POST
        Type: AWS_PROXY
        PassthroughBehavior: WHEN_NO_MATCH
        Uri:
          Fn::Join:
            - ":"
            - - !Sub "arn:aws:apigateway:${AWS::Region}:lambda"
              - !Sub "path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function"
              - !Sub "${LambdaName}/invocations"
ApiGatewayInvokeLambdaPermissionAny:
    Type: AWS::Lambda::Permission
    Properties:
      Action: lambda:InvokeFunction
      FunctionName:
        Fn::Join:
          - ":"
          - - !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function"
            - !Ref LambdaName
      Principal: apigateway.amazonaws.com
      SourceArn:
        Fn::Join:
          - ":"
          - - !Sub "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}"
            - !Sub "${RestAPI}/*/ANY/*"

Параметры:

  • RestAPI — это ваш идентификатор API
  • RestApiRootResourceId — это идентификатор корневого ресурса (!GetAtt "RestApi.RootResourceId")
  • LambdaName — это имя вашего лямбда-прокси.
  • Путь - это то, что у меня есть между сценой и корнем (для конкретного использования)

Другие вопросы по теме