我有一个 CSP,其中包含以下行:
script-src 'nonce-{random}' 'unsafe-inline' 'unsafe-eval' 'strict-dynamic' https: http: https://static.cloudflareinsights.com https://mydomain.app/cdn-cgi/scripts/6c4dd986/cloudflare-static/email-decode.min.js;
Run Code Online (Sandbox Code Playgroud)
我可以看到页面响应标头中的 CSP 是正确的。
我仍然收到[Report Only] Refused to load the script https://mydomain.app/cdn-cgi/scripts/6c4dd986/cloudflare-static/email-decode.min.js错误。
Cloudflare 会自动注入此脚本标记,因此我不能依赖该strict-dynamic属性来覆盖它,也不能添加随机数。
这是因为scrict-dynamic覆盖 CSP 中的固定 url 而失败吗?我们需要在应用程序内严格动态,但我们还需要在这些情况下允许自定义白名单 URL。
有任何想法吗?
编辑:具体来说,我认为问题出在 cloudflare 上。如何允许 cloudflare 注入脚本,同时具有严格的动态设置?你不能给 cloudflare 一个随机数,而且 strict-dynamic 也不会让你加入白名单,那么如何克服这个问题呢?
这是发生这种情况的另一个例子^
我一直不明白为什么,但即使是最简单的木偶脚本也无法通过 goTo()
我有以下代码:
const browser = await puppeteer.launch({ executablePath: '/usr/bin/google-chrome-unstable', args: ["--proxy-server='direct://'", '--proxy-bypass-list=*', '--no-sandbox', '--disable-setuid-sandbox'] });
const page = await browser.newPage();
await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36');
await page.setDefaultNavigationTimeout(0);
log('before nav');
await page.goto('http://www.google.com');
log('waiting nav');
await page.waitForNavigation({
waitUntil: 'networkidle0'
});
log('complete');
await browser.close();
Run Code Online (Sandbox Code Playgroud)
输出是:
$:# node lib/tests/nav.test.js
before nav
waiting nav
Run Code Online (Sandbox Code Playgroud)
它永远不会记录“完整”。我尝试过不使用代理旁路和代理服务器、打开和关闭无沙箱。我努力了networkidle2。它没有完成。我还尝试了各种不同的网站。我使用 Puppeteer 4.x 并使用节点 12.x 和 npm 6.x。
我研究了人们建议的 Promise 方法:
await Promise.All([ page.goto('http://www.google.com'), page.waitForNavigation() …Run Code Online (Sandbox Code Playgroud) 我正在寻找编写一个 PHP 脚本来扫描我的 gmail 收件箱,并阅读未读的电子邮件。不需要用户交互。这必须发生在执行 PHP 文件的 cronjob 上。
这甚至可以通过 API 实现吗?Google 的文档绝对糟糕透了,似乎没有任何示例可以让您以编程方式授权登录。他们总是要求用户在 oauth 请求上物理按下允许按钮。
有没有人尝试过简单地登录并列出您的消息而无需人工交互的经验?
使用 Laravel 6 等 Eloquent Collection 类。
所以我有“很多”数据需要处理。大约 5000 行,在获取它时,会生成一个包含 5000 个模型的集合。现在,每个模型可能都有 20 个属性需要读取。
有没有快速的方法来做到这一点?我目前有一个要读取的属性数组,然后像这样设置循环:
\fopen()...
foreach ($models as $model) {
$row = [];
foreach ($this->attributes as $attr) {
$row[] = \data_get($model, $attr);
}
\fputcsv($fh, $row);
}
\fclose()...
Run Code Online (Sandbox Code Playgroud)
$models是一个 Laravel 集合,由其中创建,EloquentModel::find($ids);其中$ids是整数数组。(来自数据库的 5000 个 ID)
$this指的是包含 foreach 循环的类。attributes除了包含上面代码的函数和只是一个字符串数组的属性之外,这个类中没有其他任何东西。
对于 5000 行,每行循环 20 个属性,这可能需要很长时间来处理,并且在每种情况下,这实际上都会抛出FatalErrorException: Allowed memory size of 134217728 bytes exhausted
那么检索每行属性集的最快方法是什么?我个人想不出比这个嵌套循环更快的循环了。
此外,看到\fputcsv()将每一行写入文件,并且$row变量在每个循环中被覆盖,为什么我仍然得到Allowed memory size exhausted?
LazyCollection …
我正在使用 docker 使用应用程序(我不是很熟悉),我需要添加 2 个新的 PHP 扩展。我Dockerfile对现有图像进行了如下更改:
FROM php:7.2-fpm
RUN apt-get update
RUN apt-get install -y git unzip
RUN php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer
RUN apt-get install -y git libpng-dev \
&& docker-php-ext-install gd
RUN apt-get install -y mysql-client \
&& docker-php-ext-configure pdo_mysql --with-pdo-mysql=mysqlnd \
&& docker-php-ext-install pdo_mysql
RUN apt-get install -y libgmp-dev bcmath \
&& docker-php-ext-configure gmp \
&& docker-php-ext-install gmp \
&& docker-php-ext-install bcmath
RUN pecl install xdebug \
&& docker-php-ext-enable xdebug
ADD …Run Code Online (Sandbox Code Playgroud) php ×2
automation ×1
docker ×1
e2e-testing ×1
gmail-api ×1
google-api ×1
google-oauth ×1
http-headers ×1
javascript ×1
laravel ×1
nginx ×1
node.js ×1
provisioning ×1
puppeteer ×1
security ×1