我使用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?
当我在对象数组而不是字符串数组上读取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) 我想在我的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种模式:[] …
我想制作一个注册页面,当用户点击注册时,它会检查两个密码是否相同,如果没有,请在"确认密码"后给出错误信息.
但是当我在我的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)