AWS Elastic Load Balancer not Forwarding HTTP Headers to EC2 Instance

Viewed 4339

I'm currently running a Python Flask Application on Amazon Elastic Beanstalk. When I test the application, it all works fine locally (I used Postman to send the GET & POST requests). However, on AWS, it doesn't work because the request that gets to my EC2 instances (behind the load balancer) does not include the Authorization header. It seems like the load balancer strips off the header. Is there something I'm doing wrong here?

Here's a comparison of what I get when I print out the header locally and on Elastic Beanstalk.

Locally

[2017-07-04 13:18:14,650] [INFO] [common.decorators] Headers = Host: localhost:5000 Connection: keep-alive Content-Length: 151 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Cache-Control: no-cache Origin: chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop Content-Type: application/json Authorization: Bearer ad9fd4d9-6ce6-497b-855a-dcebebdad65b Postman-Token: xxxxx Accept: */* Accept-Encoding: gzip, deflate, br Accept-Language: en-US,en;q=0.8

Elastic Beanstalk:

[2017-07-04 17:27:03,813] [DEBUG] [common.decorators] Headers = Accept-Language: en-US,en;q=0.8 Accept: */* Host: dev.onetext.com X-Forwarded-For: 66.30.13.108 Content-Type: application/json Postman-Token: xxxxx Connection: keep-alive Accept-Encoding: gzip, deflate, sdch, br X-Forwarded-Proto: https Cache-Control: no-cache X-Forwarded-Port: 443 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36

2 Answers

AWS do not accept unserscores (_) in headders, while we can use (-), So Remove underscores from the header variables, example:- header_var_val = "some value" replace it with

headervarval = "some value"

It works for me

Related