@@ -129,6 +129,7 @@ AWSAuthV4Signer::AWSAuthV4Signer(const std::shared_ptr<Auth::AWSCredentialsProvi
129
129
m_region(region),
130
130
m_hash(Aws::MakeUnique<Aws::Utils::Crypto::Sha256>(v4LogTag)),
131
131
m_HMAC(Aws::MakeUnique<Aws::Utils::Crypto::Sha256HMAC>(v4LogTag)),
132
+ m_unsignedHeaders({" user-agent" , " x-amzn-trace-id" }),
132
133
m_signPayloads(signPayloads),
133
134
m_urlEscapePath(urlEscapePath)
134
135
{
@@ -141,6 +142,12 @@ AWSAuthV4Signer::~AWSAuthV4Signer()
141
142
// empty destructor in .cpp file to keep from needing the implementation of (AWSCredentialsProvider, Sha256, Sha256HMAC) in the header file
142
143
}
143
144
145
+
146
+ bool AWSAuthV4Signer::ShouldSignHeader (const Aws::String& header) const
147
+ {
148
+ return m_unsignedHeaders.find (Aws::Utils::StringUtils::ToLower (header.c_str ())) == m_unsignedHeaders.cend ();
149
+ }
150
+
144
151
bool AWSAuthV4Signer::SignRequest (Aws::Http::HttpRequest& request) const
145
152
{
146
153
AWSCredentials credentials = m_credentialsProvider->GetAWSCredentials ();
@@ -186,8 +193,11 @@ bool AWSAuthV4Signer::SignRequest(Aws::Http::HttpRequest& request) const
186
193
187
194
for (const auto & header : CanonicalizeHeaders (request.GetHeaders ()))
188
195
{
189
- headersStream << header.first .c_str () << " :" << header.second .c_str () << NEWLINE;
190
- signedHeadersStream << header.first .c_str () << " ;" ;
196
+ if (ShouldSignHeader (header.first ))
197
+ {
198
+ headersStream << header.first .c_str () << " :" << header.second .c_str () << NEWLINE;
199
+ signedHeadersStream << header.first .c_str () << " ;" ;
200
+ }
191
201
}
192
202
193
203
Aws::String canonicalHeadersString = headersStream.str ();
0 commit comments