相关疑难解决方法(0)

ReactJS-在重定向前删除 HTTP 标头

在我的 React 应用程序中,我正在GET对一个端点进行REST Web 服务调用,其目的是为受保护的 S3 资产生成一个预签名的 AWS URL。我们将Authorization标头和令牌传递给服务。

此初始调用按预期工作,服务以重定向(通过 307 响应代码)进行响应,并在响应的Location标头中包含预签名 URL 。

我面临的问题是,当遵循重定向时,亚马逊拒绝使用 400 响应代码和以下消息的呼叫。

Only one auth mechanism allowed; only the X-Amz-Algorithm query parameter, Signature query string parameter or the Authorization header should be specified.
Run Code Online (Sandbox Code Playgroud)

有没有办法Authorization在重定向之前删除标题?

这似乎应该是一种相当普遍的情况(当 React 应用程序需要访问受保护的 S3 资产时)——有没有更好的方法来处理这个用例?

rest amazon-web-services reactjs

8
推荐指数
1
解决办法
1850
查看次数

C# HttpClient 授权标头在发送到服务器后被删除

HttpClient我想通过我自己的 C# API向外部 API 发送请求。我正在使用 dot net 5 和基本身份验证。这是我的代码:

var client = new HttpClient 
{
    BaseAddress = new Uri(baseUrl)
};

HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Put, "apiUrl");

client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

var param = JsonConvert.SerializeObject(new
{
   param1="",
   param2=""
});

requestMessage.Content = new StringContent(param, Encoding.UTF8, "application/json");
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Basic",
     Convert.ToBase64String(Encoding.ASCII.GetBytes($"{user}:{pass}")));

HttpResponseMessage response = await client.SendAsync(requestMessage);
Run Code Online (Sandbox Code Playgroud)

通常,我像这样发送http请求。但现在我遇到了一些问题。

从我的请求标头中删除行授权标头后HttpResponseMessage response = await client.SendAsync(requestMessage);,我收到 UnAuthorized http 错误。

我知道,当发生重定向时,出于安全原因,授权标头被删除。我也不确定外部 API 中的重定向。

我将HttpClientHandlerwith添加AllowAutoRedirect = false到我的HttpClient

var handler = new HttpClientHandler() …
Run Code Online (Sandbox Code Playgroud)

c# httpclient unauthorized basic-authentication www-authenticate

6
推荐指数
1
解决办法
3901
查看次数

HTTP 重定向可以指示客户端从请求中去除特定标头吗?

我们有一项服务,可将用户重定向到 S3 存储桶中的对象。该请求的身份验证存储在 URL 的查询部分。

我知道规范没有指定在重定向的情况下要对请求标头做什么,但是我看到的实现将Authorization在使用 HTTP Basic 时去除标头。

有趣的是,当我们通过 HTTP 基本身份验证调用我们的服务时,它工作正常。客户端Authorization从请求中去除标头,文件从 S3 传送。

但是当我们使用 OAuth 不记名令牌调用我们的服务时,Authorization标头会留在重定向中,导致 S3 返回400错误响应。

服务器的重定向响应有没有办法指示客户端Authorization在访问响应的Location标头之前去除标头?

http amazon-s3

5
推荐指数
0
解决办法
911
查看次数

重定向期间在 RestSharp 中保留授权标头

我正在使用 RestSharp 进行 GET api 调用。api 调用通过传递授权标头通过 HTTP 基本身份验证进行身份验证。

服务器使用状态代码 307 重定向 api 调用。我的客户端代码确实处理重定向,但授权标头未传递到此重定向的 api 调用。这样做是出于此处提到的正当理由。因此我确实收到了未经授权的错误。

如何配置 RestClient 来恢复授权标头?

var client = new RestClient("https://serverurl.com");
var request = new RestRequest(Method.GET);

request.AddHeader("Authorization", "Basic Z3JvdXAxOlByb2otMzI1");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Tenant-Id", "4892");

IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Run Code Online (Sandbox Code Playgroud)

c# api unauthorized restsharp

4
推荐指数
1
解决办法
5694
查看次数

使用 C# 客户端缺少授权标头

我正在使用django-rest-framework. 对于授权,我选择使用令牌授权(而不是 JWT)。以下是我尝试过的:

使用邮递员(作品)

headers: 
Authorization: Token 329367424fd30a876ccff05dbc5a18d86fe7158c
Run Code Online (Sandbox Code Playgroud)

使用 C# 客户端(不起作用)

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Token 329367424fd30a876ccff05dbc5a18d86fe7158c");
await client.GetAsync(<url>)

// Authentication credentials were not provided.
Run Code Online (Sandbox Code Playgroud)

在我调试和覆盖TokenAuthentication函数后,我意识到Authorization headers如果客户端请求,该函数将被删除C#

编辑

实际上我尝试过使用 Javascript 并且它也有效,我认为问题是 C# HttpClient

我试过

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization3", $"token {token}");
client.DefaultRequestHeaders.Add("Authorization", $"token {token}");
Run Code Online (Sandbox Code Playgroud)

Authorization在 python 中调试函数,我发现只Authorization3发送到服务器而Authorization不是

在此输入图像描述

c# django wsgi gunicorn django-rest-framework

0
推荐指数
1
解决办法
2881
查看次数