小编Odr*_*ded的帖子

使Flask的url_for在AWS负载均衡器中使用"https"方案,而不会弄乱SSLify

我最近在我的webapp上添加了SSL证书.它部署在Amazon Web Services上使用负载均衡器.负载平衡器用作反向代理,处理外部HTTPS并发送内部HTTP.因此,尽管是安全连接,但我的Flask应用程序的所有流量都是HTTP,而不是HTTPS.

由于该网站在HTTPS迁移之前已经在线,因此我使用SSLify发送301 PERMANENT REDIRECTS到HTTP连接.尽管所有连接都是HTTP,但它仍然有效,因为反向代理X-Forwarded-Proto使用原始协议设置请求标头.

问题

url_for不关心X-Forwarded-Proto.my_flask_app.config['PREFERRED_URL_SCHEME']当方案不可用时,它将使用,但在请求期间,方案可用.与反向代理连接的HTTP方案.

因此,当有人连接时https://example.com,它会连接到负载均衡器,然后使用负载均衡器连接到Flask http://example.com.Flask看到http并假设该方案是HTTP,而不是原来的HTTPS.

这在大多数url_for模板中使用都不是问题,但任何url_for使用的_external=True都将使用http而不是https.就个人而言,我使用_external=True,rel=canonical因为我听说它是​​推荐的做法.除此之外,using Flask.redirect将使用非_external url前置http://example.com,因为重定向头必须是完全限定的URL.

例如,如果您在表单帖子上重定向,则会发生这种情况.

  1. 客户帖子 https://example.com/form
  2. 服务器发布303 SEE OTHERhttp://example.com/form-posted
  3. 然后SSLify发出一个301 PERMANENT REDIRECThttps://example.com/form-posted

由于SSLify,每次重定向都会成为2次重定向.

试图解决方案

添加PREFERRED_URL_SCHEME配置

/sf/answers/1864581631/

my_flask_app.config['PREFERRED_URL_SCHEME'] = 'https'
Run Code Online (Sandbox Code Playgroud)

不起作用,因为在请求期间存在方案,而是使用该方案.见https://github.com/mitsuhiko/flask/issues/1129#issuecomment-51759359

包装中间件以模拟HTTPS

/sf/answers/1977330421/

def _force_https(app):
    def wrapper(environ, start_response):
        environ['wsgi.url_scheme'] = 'https'
        return app(environ, start_response)
    return …
Run Code Online (Sandbox Code Playgroud)

python https amazon-web-services flask

20
推荐指数
2
解决办法
4996
查看次数

如何使用PyGI GTK中的GIO操作创建完整的菜单?

我正在尝试在我的Gtk应用程序中转换菜单栏,因此它将使用GActions(来自Gio)而不是GtkActions使用GObject Instrospection的Python3.

我一直试图自己解决这个问题,但到目前为止看起来非常复杂,我没有太多运气.

如果有人可以请发布一个如何创建GAction基于的简单菜单的示例

  • 一个子菜单
  • 带有库存ID图标/热键的菜单项
  • 带有非库存图标/热键的菜单项
  • 已检查的菜单项
  • 和收音机菜单项目组
  • 禁用(灰显)菜单项

这对我很有帮助.

编辑:这是我现在在窗口中的菜单栏:

在此输入图像描述

如果有人可以复制使用GioActions显示的菜单项,那么我就可以弄清楚它们是如何工作的,这样会很棒.

顺便说一下,我使用窗口回调的所有操作都不是app回调,所以这是一个窗口菜单栏而不是app菜单栏.

python gtk pygobject python-3.x gtk3

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

对具有多行表格单元格的表中的多行使用label标签

我有一个带有复选框的表格,每个复选框行中的单元格包含有关该复选框的信息.所以我想为行使用label,但据我所知,你不能在tabletd 标签之间使用label.

然后我制作了同样的CSS-table版本,它运行正常.我将标签设置为表格行,单元格正确对齐,单击它们将选中/取消选中复选框.

现在问题是:我希望复选框跨越多行.

http://jsfiddle.net/odraencoded/YaS5v/ - HTML表格版本具有rowspan属性,但我不能在单行中使用标签,更不用说多行了.

<table>
  <tr>
    <td rowspan=2><input type=checkbox /></td>
    <td>...</td>
  </tr>
  <tr><td>...</td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/odraencoded/EKzXv/ - CSS表版本让我使用标签,但我找不到设置rowspan的方法.

<div style="display: table;">
  <label style="display: table-row-group;">
    <span style="display: table-row;">
      <span style="display: table-cell;">
        <input type="checkbox" />
      </span>
      <span...>...</span>
    </span>
    <span...><span...>...</span></span>
  </label>
</div>
Run Code Online (Sandbox Code Playgroud)

有没有办法让标签标签包含多行?它包含的一个单元格是标签所用的输入复选框?那个输入复选框单元格应该跨越标签包含的所有行?无论如何呢?

html css forms html-table css-tables

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

使用追溯存储和打印异常吗?

在python3程序中,我有一个特定的try...except块,我将在某种方法中list发生的异常存储到已发生的异常中。简化版本如下所示:

def the_method(iterable):
   errors = []
   for i in iterable:
       try:
           something(i)
        except Exception as e:
            errors.append(e)
   return errors
Run Code Online (Sandbox Code Playgroud)

方法返回,我想在控制台中打印错误。如何使用追溯和通常未捕获的异常格式打印异常

python python-3.x

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