小编sel*_*oot的帖子

Nginx如何在路径/下仅添加一次cookie

我使用nginx作为反向代理来服务器网站,每个请求都会由nginx传输到后门应用程序,一旦生成响应,就会由nginx回复给客户端。我想要做的是当 nginx 从后门应用程序获取响应时添加自定义 cookie。

假设我的域名是xxx.com,从用户的角度来看,当他访问我网站的任何页面时,他的浏览器都会得到一个如下所示的cookie用户名:

在此输入图像描述

第一次尝试

我的 nginx 配置是:

location / {
    add_header Set-Cookie "username=$http_id; Domain=.xxx.com; Path=/" always;
}
Run Code Online (Sandbox Code Playgroud)

当访问我网站的每个页面时,nginx都会添加用户名和新路径(路径不是/,它是nginx中的$uri变量),然后我的网站下有很多重复的cookie用户名(它们只是在小路)。好像:

在此输入图像描述

第二次尝试

我将conf更改为:

location = / {
    add_header Set-Cookie "username=$http_id; Domain=.xxx.com; Path=/" always;
}
Run Code Online (Sandbox Code Playgroud)

这次,没有重复的 cookie 项,但必须访问 xxx.com/。如果只访问某些页面而不访问 /,则不会设置 cookie。

问题

什么conf可以让nginx在用户访问我网站的任何页面时只写入一次cookie?

cookies nginx

5
推荐指数
0
解决办法
7608
查看次数

在python中使用str.join和生成器表达式

当我在对象数组而不是字符串数组上读取Python string.join(list)的问题时,我找到以下句子:

', '.join(str(x) for x in list)
Run Code Online (Sandbox Code Playgroud)

我已经知道(str(x) for x in list)是一个生成器表达式,我也知道生成器是一个可迭代的.以下代码验证了我的视图的正确性.

>>> gen = (x for x in [1,2,3])
<generator object <genexpr> at 0x104349b40>
>>> from collections import Iterable
>>> isinstance(gen, Iterable)
True
Run Code Online (Sandbox Code Playgroud)

同时,str.join(iterable)返回一个字符串,该字符串是iterable中字符串的串联.所以以下工作正常,我希望如此.

>>> ",".join((str(x) for x in [1,2,3]))
'123'
Run Code Online (Sandbox Code Playgroud)

接下来是问题,为什么代码在下面工作得很好,为什么在函数调用中不需要括号.

', '.join(str(x) for x in [1,2,3])
Run Code Online (Sandbox Code Playgroud)

毕竟, str(x) for x in [1,2,3]它本身不是发电机.

>>> tmp = str(x) for x in [1,2,3]
  File "<stdin>", line 1
    tmp = str(x) …
Run Code Online (Sandbox Code Playgroud)

python generator call

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

使用参数'()'和找不到关键字参数'{}来反向'login'

我想在我的Django视图中使用reverse()来避免使用硬代码,但是使用参数'()'和关键字参数'{}'找不到 " 反向'登录' ".这是我的代码:

URL配置:

urlpatterns = patterns(
    '',
    url(r'^accounts/', include('accounts.urls', namespace="accounts")),
    url(r'^admin/', include(admin.site.urls)),
)
Run Code Online (Sandbox Code Playgroud)

urls.py

urlpatterns = patterns(
    '',
    url(r'^login/$', views.login, name='login'),
    url(r'^signup/$', views.signup, name='signup'),
)
Run Code Online (Sandbox Code Playgroud)

views.py:

def login(request):
    return render(request, reverse("login"))


def signup(request):
    return render(request, reverse("signup"))
Run Code Online (Sandbox Code Playgroud)

这是我的追溯信息:

环境:

请求方法:GET
请求URL:http://127.0.0.1:8000/accounts/login/

Django版本:1.7
Python版本:2.7.5
已安装的应用程序:(
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib .messages',
'django.contrib.staticfiles',
'accounts')
已安装的中间件:(
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware ',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')

回溯:在get_response 111中输入文件"/Users/feizhao/.virtualenvs/nahan/lib/python2.7/site-packages/django/core/handlers/base.py".response = wrapped_callback(request,*callback_args,**callback_kwargs )
登录11中的文件"/Users/feizhao/dropbox/nahan/accounts/views.py".返回渲染(请求,反向("登录"))文件"/Users/feizhao/.virtualenvs/nahan/lib/python2. 7/site-packages/django/core/urlresolvers.py"反向546. return iri_to_uri(resolver._reverse_with_prefix(view,prefix,*args,**kwargs))
file"/Users/feizhao/.virtualenvs/nahan/lib _reverse_with_prefix 463中的/python2.7/site-packages/django/core/urlresolvers.py"(lookup_view_s,args,kwargs,len(patterns),patterns))

异常类型:NoReverseMatch at/accounts/login/
Exception Value:反向'login',参数'()'和关键字参数'{}'未找到.尝试过0种模式:[] …

python django

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

django TemplateDoesNotExist

我想制作一个注册页面,当用户点击注册时,它会检查两个密码是否相同,如果没有,请在"确认密码"后给出错误信息.

但是当我在我的views.py中调用"return render(request,reverse("accounts:signup"),{'form':signup_form})"时,它会显示一个错误,回溯是:

Environment:

Request Method: POST
Request URL: http://127.0.0.1:8000/accounts/signup_post/

Django Version: 1.7
Python Version: 2.7.5
Installed Applications:
('django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'accounts')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware')

Template Loader Error:
Django tried loading these templates, in this order:
Using loader django.template.loaders.filesystem.Loader:
Using loader django.template.loaders.app_directories.Loader:

Traceback:
File "/Users/feizhao/.virtualenvs/nahan/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  111.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/feizhao/dropbox/nahan/accounts/views.py" in signup_post
  64.     return render(request, reverse("accounts:signup"), {'form': signup_form})
File "/Users/feizhao/.virtualenvs/nahan/lib/python2.7/site-packages/django/shortcuts.py" in render
  48.     return HttpResponse(loader.render_to_string(*args, **kwargs), …
Run Code Online (Sandbox Code Playgroud)

python django

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

标签 统计

python ×3

django ×2

call ×1

cookies ×1

generator ×1

nginx ×1