flask如何获取请求的HTTP_ORIGIN

时间:2015-02-11 07:42:09

标签: python flask

我想用" Access-Control-Allow-Origin"做出回应。标题一直由我自己设置,而它似乎搞砸了" HTTP_ORIGIN"参数随请求而来。

3 个答案:

答案 0 :(得分:6)

我正在使用 flask - 0.10.1 HTTP_ORIGIN似乎是此object的其中一个

flask.request.environ

以下是我在处理请求时从print flask.request.environ获得的内容:

{
  "wsgi.multiprocess": false,
  "HTTP_REFERER": "http://www.freemerce.com/product/77104116",
  "SERVER_SOFTWARE": "Werkzeug/0.9.6",
  "SCRIPT_NAME": "",
  "REQUEST_METHOD": "GET",
  "PATH_INFO": "/prod/sync_req",
  "HTTP_ORIGIN": "http://www.freemerce.com",
  "SERVER_PROTOCOL": "HTTP/1.1",
  "QUERY_STRING": "",
  "werkzeug.server.shutdown": "<function shutdown_server at 0x4060e60>",
  "CONTENT_LENGTH": "",
  "HTTP_USER_AGENT": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.94 Safari/537.36",
  "HTTP_CONNECTION": "keep-alive",
  "SERVER_NAME": "0.0.0.0",
  "REMOTE_PORT": 53690,
  "wsgi.url_scheme": "http",
  "SERVER_PORT": "80",
  "werkzeug.request": "<Request http://192.168.0.10/prod/sync_req [GET]>",
  "wsgi.input": "<socket._fileobject object at 0x405e1d0>",
  "HTTP_DNT": "1",
  "HTTP_HOST": "192.168.0.10:80",
  "wsgi.multithread": false,
  "HTTP_ACCEPT": "*/*",
  "HTTP_RA_SID": "DB52333D-20140914-070803-53c316-5f3242",
  "wsgi.version": "(1, 0)",
  "wsgi.run_once": false,
  "HTTP_RA_VER": "2.8.7",
  "wsgi.errors": "<open file <stderr>, mode 'w' at 0x7f57d074c270>",
  "REMOTE_ADDR": "192.168.0.131",
  "HTTP_ACCEPT_LANGUAGE": "en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4,ja;q=0.2,zh-TW;q=0.2",
  "CONTENT_TYPE": "",
  "HTTP_ACCEPT_ENCODING": "gzip, deflate, sdch"
}

答案 1 :(得分:6)

这将为您提供答案

from flask import request
...
if request.environ['HTTP_ORIGIN'] is not None:
    print request.environ['HTTP_ORIGIN']

答案 2 :(得分:0)

这是示例:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/uikit/3.0.0-rc.25/js/uikit-icons.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/uikit/3.0.0-rc.25/js/uikit.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/uikit/3.0.0-rc.25/css/uikit.min.css" rel="stylesheet"/>
<div class="uk-child-width-1-3@m" uk-grid uk-lightbox="animation: slide">
    <div>
        <a class="uk-inline" href="https://source.unsplash.com/400x300/?heli" data-caption="Caption 1">
            <img src="https://source.unsplash.com/400x300/?heli" alt="">
        </a>
    </div>
    <div>
        <a class="uk-inline" href="https://source.unsplash.com/400x300/?heli" data-caption="Caption 2">
            <img src="https://source.unsplash.com/400x300/?heli" alt="">
        </a>
    </div>
    <div>
        <a class="uk-inline" href="https://source.unsplash.com/400x300/?heli" data-caption="Caption 3">
            <img src="https://source.unsplash.com/400x300/?heli" alt="">
        </a>
    </div>
</div>