标签: authorization-header

Python 请求:POST 请求删除 Authorization 标头

我正在尝试使用 Python requests 库发出 API POST 请求。我正在传递一个Authorization标头,但是当我尝试调试时,我可以看到标头正在被删除。我不知道是怎么回事。

这是我的代码:

access_token = get_access_token()
bearer_token = base64.b64encode(bytes("'Bearer {}'".format(access_token)), 'utf-8')
headers = {'Content-Type': 'application/json', 'Authorization': bearer_token}
data = '{"FirstName" : "Jane", "LastName" : "Smith"}'
response = requests.post('https://myserver.com/endpoint', headers=headers, data=data)
Run Code Online (Sandbox Code Playgroud)

正如您在上面看到的,我Authorization在请求参数中手动设置了标头,但它缺少实际请求的标头: {'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'User-Agent': 'python-requests/2.4.3 CPython/2.7.9 Linux/4.1.19-v7+'}

另外一条信息是,如果我将 POST 请求更改为 GET 请求,则Authorization标头会正常通过!

为什么这个库会丢弃 POST 请求的标头,我该如何让它工作?

使用请求库的 v2.4.3 和 Python 2.7.9

python http http-headers python-requests authorization-header

11
推荐指数
1
解决办法
7786
查看次数

在 NestJS 中,我可以在控制器级别添加什么装饰器来将授权标头添加到我的 Swagger 文档中?

我正在使用 NestJS 7.6.11。我的控制器上有以下装饰器......

@Controller('private')
@ApiTags('MyObjects')
@ApiConsumes('application/json')
@ApiProduces('application/json')
@UseInterceptors(new JwtInterceptor())
export class MyController {
Run Code Online (Sandbox Code Playgroud)

是否有任何我可以添加的装饰器会导致生成 Swagger(OpenAPI 3)文档,以表明我的控制器中的所有方法都需要有一个“授权”标头?

编辑:作为回应,我添加了 @ApiHeader 所以我的控制器和方法看起来像

@

Controller('myendpoint')
@ApiTags('MyObject')
@ApiConsumes('application/json')
@ApiProduces('application/json')
@ApiHeader({
  name: 'authorization',
  description: 'Auth token',
})
@UseInterceptors(new JwtInterceptor())
export class MyObjectController {

...
 @Get('/:id')
  @ApiOkResponse({
    description: 'OK',
    type: Content,
  })
  @ApiBadRequestResponse()
  @ApiInternalServerErrorResponse()
  @ApiOperation({
    summary: 'Get object by id',
    description: 'Get object by id',
    operationId: 'findObjectById',
  }) 
  findObjectById(@Req() req, @Param('id') id: string): Promise<MyObject> {
Run Code Online (Sandbox Code Playgroud)

但是当生成 swagger 文档时,尽管我可以输入“授权”标头值,

在此输入图像描述

当我单击“执行”时,它不会包含在我的curl中,它生成为

curl -X GET "http://localhost:8060/myendpoint/abcdef" -H  "accept: application/json"
Run Code Online (Sandbox Code Playgroud)

swagger openapi nestjs authorization-header

10
推荐指数
1
解决办法
6597
查看次数

Vercel Production Branch 正在剥离 POST 上的授权标头到无服务器函数 API

该 API 没有什么特别的,但我有一个无服务器函数 POST API,它需要一个授权标头进行验证,然后写入数据库。

例如:

     curl --location --request POST 'https://myserver.server.com/api/endpoint' \
        --header 'Authorization: Bearer blahblahblahblah'
Run Code Online (Sandbox Code Playgroud)

在 Vercel 预览分支中,我能够使其正常工作,并且Authorization标头按预期传递到我的 API。当我在生产中对此进行测试时,Authorization标头将从请求中剥离(通过记录原始请求标头来确定)。预览版和生产版在标题方面有什么区别Authorization?我需要做什么才能在生产中转发标头?

任何帮助将不胜感激。提前致谢!

next.js serverless vercel authorization-header

2
推荐指数
1
解决办法
996
查看次数