我有一个托管在AWS Elasticbeanstalk上的Django应用程序,该应用程序运行的是Chrome扩展程序将Gmail数据通过扩展内容通过XmlHttpRequest()脚本 - 不是背景。SECTION_PROXY_SSL_HEADER在DJango设置导致CORS预检301响应状态代码(和失败)
许多人可能知道这是谁做的,Chrome需要Web服务的安全端点。因此,服务器上有第三方验证的证书,并且CORS已被正确设置,因为我在预检OPTIONS请求中获得了正确的响应标头。我现在遇到的问题使得整个事情崩溃了,现在是响应中的301状态代码,这会导致CORS请求失败 - 您也可能知道这会导致CORS进程按规范失败。
一些试验和错误之后,我已经确定了Django的SSL设置:
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
其HTTP请求转发到HTTPS如果有涉及到代理(大概AWS是路由事物的方式)是导致失败。但是,如果我没有这种设置,Chrome会抛出“不安全的端点”错误并杀死请求。所以这是一个捕获22.有没有人有任何建议来解决这个问题?这里是我的预检OPTIONS请求和响应:
================REQUEST=========== Accept:*/* Accept-Encoding:gzip, deflate, sdch Accept-Language:en-US,en;q=0.8 Access-Control-Request-Headers:content-type Access-Control-Request-Method:POST Connection:keep-alive Host:www.example.com Origin:chrome-extension://p1312312dd1d1d1d1d1d3 Referer:https://mail.google.com/mail/u/0/ User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36
================RESPONSE=========== Access-Control-Allow-Headers:content-type Access-Control-Allow-Methods:POST, OPTIONS Access-Control-Allow-Origin:* Connection:keep-alive Content-Language:en Content-Length:0 Content-Type:text/html; charset=utf-8 Date:Sat, 17 Oct 2015 17:07:13 GMT Location:https://www.example.com Server:Apache/2.4.12 (Amazon) mod_wsgi/3.5 Python/2.7.9 Vary:Accept-Language,Cookie X-Frame-Options:SAMEORIGIN