目前,我在自己的文件中有4个子类.我要求他们都在同一个文件中.我想知道我是否可以在一个模块中包含所有这四个类.目前,我正在这样导入它们
var Jack = require('./Jack.js');
var JackInstance = new Jack();
var Jones = require('./Jones.js');
var JonesInstance = new Jones();
Run Code Online (Sandbox Code Playgroud)
我想像这样导入它们
var People = require('./People.js');
var JackInstance = new People.Jack();
Run Code Online (Sandbox Code Playgroud)
甚至
var Jack = require('./People.js').Jack;
var JackInstance = new Jack();
Run Code Online (Sandbox Code Playgroud)
我的课程定义如此
class Jack{
//Memeber variables, functions, etc
}
module.exports = Jack;
Run Code Online (Sandbox Code Playgroud) 我有这种绝望的情况.
我需要在没有SSH访问的情况下在共享主机上启动Symfony2应用程序.由于缓存预热,Symfony在首次启动时使用的内存比后续启动时多得多.现在,我无法cache:clear通过控制台运行,当我手动尝试加载页面时,它会产生一个错误:
致命错误:2681行/home/domain/domain.com/app/bootstrap.php.cache中允许的内存大小为67108864字节(试图分配32个字节)
我无法增加内存限制,当我尝试从本地计算机上传生成的缓存时,在页面加载时它会给我完整的bollocks:
致命错误:未捕获异常'UnexpectedValueException',消息'流或文件"/home/domain/domain.com/app\logs/prod.log"无法打开:无法打开流:没有此类文件或目录/home/domain/domain.com/app/cache/prod/classes.php:5705
有没有人知道如何减少对内存的渴望,或者至少用已经制作的prod缓存来提供它?
我使用django-el-pagination进行延迟加载条目.
当我点击一个条目然后使用浏览器后退按钮时,所有延迟加载都消失了,我试图添加window.history.pushState()但是我只获得当前页面,即?page=4当我使用浏览器后退按钮时,所有条目都在顶部没有加载.
有没有办法实现正确的历史记录,以便用户在使用浏览器后退按钮时回到同一个地方?
$.endlessPaginate({
paginateOnScroll: true,
paginateOnScrollMargin: 400,
paginateOnScrollChunkSize: 2,
onCompleted: function(context, fragment) {
window.history.pushState(null, null, context.url);
}
});
Run Code Online (Sandbox Code Playgroud)
这是.endlessPaginate函数的JavaScript :
'use strict';
(function ($) {
// Fix JS String.trim() function is unavailable in IE<9 #45
if (typeof(String.prototype.trim) === "undefined") {
String.prototype.trim = function() {
return String(this).replace(/^\s+|\s+$/g, '');
};
}
$.fn.endlessPaginate = function(options) {
var defaults = {
// Twitter-style pagination container selector.
containerSelector: '.endless_container',
// Twitter-style pagination loading selector.
loadingSelector: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用表示当前区域设置的子域来设置路由系统.路由是通过@Routing注释设置的,如下所示:
/**
* @Route(
* "/",
* name="homepage",
* host="{locale}.{domain}",
* defaults={"locale" = "en", "domain" = "%domain%"},
* requirements={"locale" = "en|de|fr", "domain" = "%domain%"}
* )
*/
Run Code Online (Sandbox Code Playgroud)
适用于URL的类似en.somedomain.com或de.somedomain.com,但无法找到正确的路由somedomain.com,没有区域设置.
我理解,因为host参数,设置为表示确切的locale.domain模式,但我找不到告诉Symfony路由系统可能有额外的默认方式host.
周围搜索了这一点,但没有发现什么特别的.非常感谢任何帮助!
UPDATE
实际上有一种方法可以通过@Route在注释中添加另一个而不使用host参数来实现:
/**
* @Route(
* "/",
* name="homepage_default",
* defaults={"locale" = "en"}
* )
*/
Run Code Online (Sandbox Code Playgroud)
但那看起来有点脏,而且我没有%domain%在那里使用参数,这对我很重要 - 比方说,如果我需要另一个子域用于移动版本.
我一直试图找到有关是否password_verify()使用长度 - 恒定时间比较来避免定时攻击的信息.
现在,简单的例子:
$hash = '$2y$10$HH3906lfby7HOy1N3duQh.Kju.84ct6AcMZm2p/SYZsZSXuYWvvT.';
$startTime = microtime(TRUE);
password_verify('rasmuslerdorf', $hash);
$endTime = microtime(TRUE);
$time = $endTime - $startTime;
Run Code Online (Sandbox Code Playgroud)
这总是产生稍微不同的输出,根据这篇文章("为什么这个页面上的散列码比较"长度常数"时间段中的散列?"段落),可以用于定时攻击来获取散列.我认为这些结果看起来有点随机,但它们肯定不会保持不变.
问题是,是否password_verify()使用长度 - 恒定时间比较来避免定时攻击?在文档中没有关于它的信息,并且由于我的浅薄经验,我无法很好地解释函数处理时间结果.
我已经在SO上看到了很多,但没有什么能解决我的问题.
问题:
启用CSRF中间件后,Django在AJAX表单请求上响应403,说明:
"未设置CSRF cookie."
在文档之后,实现了一个JS功能,它设置了自定义的"X-CSRFToken"标头.
它按预期工作,从浏览器获取"csrftoken" cookie并将其与AJAX请求一起发布:
x-csrftoken: 1a0u7GCQG0wepZHQNThIXeYpMy2lZOf2
Run Code Online (Sandbox Code Playgroud)
但回应仍然是403.
尝试的解决方案:
我已经尝试过在SO或网上找到的所有内容,特别是:
检查是否启用了中间件:
MIDDLEWARE_CLASSES = [
...
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
...
]
Run Code Online (Sandbox Code Playgroud)启用了Cookie的不同浏览器;
装饰我的观点@ensure_csrf_cookie;
{% csrf_token %}在我的模板中设置;
使用render获取正确请求上下文的快捷方式
设置自定义CSRF_COOKIE_NAME和CSRF_HEADER_NAME我的settings.py;
明确地设定CSRF_COOKIE_SECURE = False和CSRF_COOKIE_HTTPONLY = False;
明确CSRF_TRUSTED_ORIGINS设定;
测试开发和生产服务器;
即便request.META["CSRF_COOKIE_USED"] = True在我看来,正如有人建议的那样.
仍然一无所获.
头:
如果我使用@csrf_exempt并print(request.META)在我的视图中,很明显自定义标题"X-CSRFToken"存在于请求中并根据Django文档格式化,带有"HTTP_"前缀,用下划线替换连字符,全部大写:"HTTP_X_CSRFTOKEN".
更重要的是,它的价值与Django设置的cookie相匹配.
饼干:
奇怪的是,如果我尝试print(request.COOKIES)在我的视图中,在页面和表单加载上我可以看到 …
我对AES密钥和IV长度有疑问.
首先,例如,如果我使用药物 OpenSSL扩展和openssl_encrypt()方法,我可以清楚地看到256位AES的密钥应该是32字节,如果它不同于16字节,则IV会发出警告.我能理解,一切都很好.
然而,在CryptoJS图书馆中,密钥和IV长度令人沮丧.这是一些例子:
var text = "test",
key = "us5N0PxHAWuIgb0/Qc2sh5OdWBbXGady",
iv = "zAvR2NI87bBx746n";
key = CryptoJS.enc.Base64.parse(key);
iv = CryptoJS.enc.Base64.parse(iv);
crypted = CryptoJS.AES.encrypt(text, key, { iv: iv });
Run Code Online (Sandbox Code Playgroud)
其中key为32字节,IV为16.CryptoJS需要解析它,并在CryptoJS.enc.Base64.parse()我得到相应的48和24字节后.我希望这些值会被截断为所需的256位AES长度,并且进一步扩展到n个字节将是无关紧要的,因此产生的密文将是相同的.
但实际上并没有发生这种情况.当我传递给CryptoJS.AES.encrypt()更大的密钥甚至 IV时,它产生不同的输出.所以我的问题是,为什么?在这种情况下,CryptoJS 库和OpenSSL有什么区别?
我一直在探索Twin-Bcrypt JavaScript库,并发现了一件奇怪的事情.有一次,我在服务器端使用PHP创建了自己的salt base64_encode(openssl_random_pseudo_bytes(16))并在TwinBcrypt.hash()函数中使用它,由于库中的常规模式不匹配,因此响应盐无效.所以,模式是:
var SALT_PATTERN = /^\$2[ay]\$(0[4-9]|[12][0-9]|3[01])\$[.\/A-Za-z0-9]{21}[.Oeu]/;
Run Code Online (Sandbox Code Playgroud)
我的盐看起来很好,除了一件事 - 这到底是什么 - [.Oeu]?
我的第一个问题是,为什么他们希望盐以点,或O,或e结束,或者你?据我所知openssl_random_pseudo_bytes()生成安全的CSPRNG,但由于模式JS库不想接受它.
第二个问题 - 盐是否有任何安全理由以/[.Oeu]/模式结束?
我会非常感谢任何帮助,因为没有太多关于它的信息.
我有一个相当简单的问题,但在任何地方都找不到答案。我正在迭代一系列切片,如下所示:
for index, arg := range os.Args[1:] {
s += fmt.Sprintf("%d: %s", index, arg)
}
Run Code Online (Sandbox Code Playgroud)
据我了解,range迭代切片,并index从范围创建,并且它是从零开始的。我得到输出:
0: argument_1
1: argument_2
// etc.
Run Code Online (Sandbox Code Playgroud)
但这不是我所期望的 - 我需要range保留该切片的索引,因此我的输出如下所示:
1: argument_1
2: argument_2
// etc.
Run Code Online (Sandbox Code Playgroud)
最明显的方法是shift在循环中添加索引:
shift := 1
for index, arg := range os.Args[shift:] {
index += shift
s += fmt.Sprintf("%d: %s", index, arg)
}
Run Code Online (Sandbox Code Playgroud)
但我想知道,是否有更多的“Go-ish”方式来做到这一点,以及如何在像这样在 Go 中创建切片时保留索引?
我有以下(简化的)文件夹/文件结构:
/.htaccess
/test.php
/api/web/index.php
Run Code Online (Sandbox Code Playgroud)
以及 apache 配置中的以下指令:
<IfModule mod_deflate.c>
<IfModule mod_filter.c>
SetInputFilter DEFLATE
</IfModule>
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我正在发送一个带有 gzipped 正文的 POST 请求,其中包含适当的标头:
POST /test.php HTTP/1.1
Host: 192.168.1.248
Authorization: Bearer ed717c077e4bf81201196011adb457731b24e19d
Content-Type: application/json
Content-Encoding: gzip
Run Code Online (Sandbox Code Playgroud)
我有.htaccess文件的以下配置:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^api/(.*) api/web/index.php/$1 [NC,L]
Run Code Online (Sandbox Code Playgroud)
问题是,如果我张贴到/test.php,一切都按预期工作,正文放气,我可以恰到好处地访问解压缩的内容。
但是,如果我发布到重定向(/api/或/api/v1/project)的内容,则index.php脚本不会解压缩正文。
我认为它必须与RewriteRule忽略SetInputFilter指令的指令有关,但是,我该如何避免这种情况?
我试图SetInputFilter直接在 .htaccess 中添加指令而没有解决问题(可能是它不在正确的地方?)。
你知道我该如何解决这个问题吗?
javascript ×4
php ×4
django ×2
symfony ×2
.htaccess ×1
ajax ×1
annotations ×1
apache ×1
bcrypt ×1
caching ×1
cookies ×1
cryptojs ×1
csrf ×1
fetch-api ×1
go ×1
hash ×1
indices ×1
jquery ×1
locale ×1
loops ×1
mod-deflate ×1
mod-rewrite ×1
node-modules ×1
node.js ×1
pagination ×1
regex ×1
routing ×1
salt ×1
security ×1
slice ×1