我希望用户能够将其网站网址输入到Chrome扩展程序中的输入框中,Chrome扩展程序将使用AJAX请求或其他类似内容来检测并告知用户URL后面的服务器是否支持发送响应通过HTTP2.这可能吗?
也许WebRequest有办法获取这些信息?还是新的Fetch API?你的请求能否以某种方式告诉服务器只能理解HTTP2回复?我看不出明显的方式.
我知道你可以使用window.chrome.loadTimes().connectionInfo获取当前页面的协议,但这需要加载我不想做的整个页面.
示例URLS:
通过HTTP2发送:https://cdn.sstatic.net/
通过HTTP 1.1提供:https://stackoverflow.com/
我正在使用PHP为常见的服务器管理任务编写快捷方式(我使用的是deployer.org,但这不重要).我想在SSH连接到服务器后添加一个用于启动交互式bash提示的任务.例如,您将运行"./dep ssh"(其中"dep"是PHP脚本),这与从终端运行例如"ssh user @ server"具有相同的效果.有没有办法在PHP中执行此操作?对于上下文,我有大约5台服务器,我经常想要SSH,或读取日志,或复制文件等,所以我想要快捷方式.
我能得到的最接近的是这样的:
$ph = popen("bash","w");
while(($line = fgets(STDIN)) !== false){
fputs($ph,$line);
}
pclose($ph);
Run Code Online (Sandbox Code Playgroud)
这允许您向bash发送命令和从bash发送命令,但是您没有看到正常的bash提示或获取选项卡完成.我需要这样的东西,但所有正常的bash功能都有效.
我编写了以下Angular指令,它将为所有子节点添加"required"属性:
.directive("requireall", function($compile) {
return {
restrict: 'A', //only want it triggered for attributes
compile: function(element, scope) {
// Prevent infinite loop on compile
element.removeAttr("requireall");
var allChildren = element.find('*');
allChildren.attr('required', 'required');
$compile(element)(scope);
}
}
});
Run Code Online (Sandbox Code Playgroud)
我真的想称它为"require-all",但是如果我重命名它就不再适用了.为什么"requireall"工作但不是"require-all"?
我可以成功地将我的Typescript项目捆绑在一起,并使用例如将其保存为单个文件
tsc --outFile "build/bundle.js"
Run Code Online (Sandbox Code Playgroud)
但是,此文件仅包含Typescript文件,并且不包含“ node_modules”目录中的任何文件,例如jQuery。如果我尝试执行捆绑软件,我将得到无法找到文件的错误。
如何将Typescript依赖的“ node_modules”文件添加到相同的单个捆绑文件中?Typescript显然知道文件在哪里,因为它具有正确的路径。
我正在使用SystemJS在浏览器中加载我的项目。我承认我很困惑我该如何去加载模块和捆绑(我可以使用SystemJS捆绑器?),却不理解为什么这样做的途径很多。
我有一个非常简单的基于 JavaScript 的 Firebase 应用程序,每个用户在 Firestore 中获得一个他们可以读取的单个文档。由于在客户端代码中可以轻松访问 Firebase API 凭据,是什么阻止用户编写快速 JavaScript 程序,例如登录并阅读此文档数百万次以耗尽我的阅读配额?
此处的文档用于检查用户是否已付费使用该应用程序,因此我担心有人会锁定所有其他付费用户。
我正在尝试编写一个简单的 Firebase 函数,使用 TypeScript 将记录添加到 Firestore。代码的精简版本是:
import * as admin from "firebase-admin";
import * as functions from "firebase-functions";
const config = functions.config();
admin.initializeApp(functions.config().firebase);
admin.database.enableLogging(true);
exports.subscriptions = functions.https.onRequest(
async (req, res) => {
try {
const requestSubscription = req.body;
const subscription = {
subscription_id: requestSubscription.subscription_id,
email: requestSubscription.email || ""
};
const id = subscription.subscription_id;
const dbSubscriptions = admin.firestore().collection("subscriptions");
await dbSubscriptions.doc(id).set(subscription);
return res.status(200).send(`Success`);
} catch (e) {
console.error(e.stack);
return res.status(500).send(`Error`);
}
}
);
Run Code Online (Sandbox Code Playgroud)
这在本地按预期工作。当我部署时,我收到此错误:
Error: 7 PERMISSION_DENIED: Missing or insufficient permissions.
at …Run Code Online (Sandbox Code Playgroud) firebase typescript google-cloud-functions google-cloud-firestore
安全 cookie 标志会停止通过 HTTP 发送 cookie。HTTPOnly 标志阻止 JavaScript 访问 cookie。
仅 HTTPS 的站点始终使用 Secure 和 HTTPOnly cookie 是否是现实的准则?混合 HTTPS 和 HTTP 站点怎么样?有什么缺点?
显然,如果您需要 HTTPS 和 HTTP 页面上的 cookie,以及您网站的 JavaScript 访问权限,您就不能使用这些标志,但是一个设计良好的网站是否需要这样做?
我正在编写一个Chrome扩展程序,其中显示了用户在沙盒iframe中选择的网站的预览.我发现很多页面都没有在iframe中正确呈现,因为它们会出现JavaScript错误,这会破坏对呈现页面很重要的脚本(比如隐藏加载对话框):
"Uncaught DOMException: Failed to read the 'localStorage' property from 'Window':
The document is sandboxed and lacks the 'allow-same-origin' flag."
"Uncaught DOMException: Failed to read the 'cookie' property from 'Document':
The document is sandboxed and lacks the 'allow-same-origin' flag."
Run Code Online (Sandbox Code Playgroud)
如何安全地回避这些错误,以便大多数页面按预期呈现?它们实际上不需要将数据保存到本地存储或cookie,只需正确呈现即可.我已经确认,如果您在常规网站上放置沙盒iframe,则会发生同样的错误,因此这不是Chrome扩展程序问题,但我可能会因为它在Chrome扩展程序中而支持它.
一些说明:
我的理解是启用'allow-same-origin'标志将是一个巨大的安全风险,因为它会让iframe访问Chrome扩展的上下文,所以我不想这样做.启用此标志确实可以解决问题.(编辑:我认为现在这实际上可能是安全的.鉴于我的背景,这是真的吗?)
在Chrome设置中,您可以阻止本地存储和Cookie,这可能会导致其他地方出现类似错误.这些设置对此没有影响.
我尝试在Chrome扩展程序页面中的另一个iframe内部加载iframe我的目标页面并得到相同的错误.
是否有可能将JavaScript注入iframe,实现'localStorage'和'cookie'的虚拟版本?我研究了内容脚本,但在页面脚本运行之前找不到改变这些全局对象的方法.可能吗?
我的清单文件是这样的:
{
"name": "test",
"version": "0.0.1",
"manifest_version": 2,
"description": "",
"icons": {
"128": "assets/app-icon/app-icon-128x128.png"
},
"default_locale": "en",
"background": {
"scripts": [
"scripts/background.js"
]
},
"permissions": [
"clipboardWrite",
"tabs",
"storage",
"webRequest",
"webRequestBlocking",
"unlimitedStorage",
"<all_urls>" …Run Code Online (Sandbox Code Playgroud) javascript cookies iframe google-chrome google-chrome-extension
我想在浏览器扩展选项卡中创建 PDF 报告。我希望能够添加图形、文本、UTF-8 支持、图像、位置文本,但除此之外,在样式和布局方面没有任何过分疯狂的东西。
我一直在阅读有关 jspdf(不支持 UTF8)和 pdfmake 的限制。看起来他们在处理很多问题时会很复杂。
我的一个想法是:
将我的报告所需的 HTML 直接放在页面上。
使用 CSS 隐藏报告 HTML 以外的所有内容,并使用“@media print”样式来设置报告样式。
触发“window.print()”以在 JavaScript 中打印页面。Chrome 显示预览,让您单击即可保存为 PDF。Firefox 的打印预览显示预览,界面有点乱,但您只需点击几下即可保存为 PDF。
我错过了什么吗?我的方法有什么主要缺点吗?也许操作系统特定的问题?为什么要使用 jspdf 或 pdfmake 呢?
我没有看到在任何我觉得奇怪的地方建议使用这种方法。我看到的唯一缺点是用户可能会对为什么他们在不期望 PDF 时被要求打印某些内容感到困惑,但由于报告不是经常生成,所以这里没什么大不了的。