小编Ole*_*gas的帖子

Amazon S3直接从客户端浏览器上传文件 - 私钥泄露

我正在使用JavaScript,通过REST API实现从客户端计算机到Amazon S3的直接文件上传,没有任何服务器端代码.一切正常,但有一件事令我担心......

当我向Amazon S3 REST API发送请求时,我需要签署请求并将签名放入Authentication标头.要创建签名,我必须使用我的密钥.但所有事情都发生在客户端,因此,可以从页面源轻松显示密钥(即使我对我的源进行模糊/加密).

我怎么处理这个?这是一个问题吗?也许我可以将特定的私钥使用仅限于来自特定CORS Origin的REST API调用,仅限于PUT和POST方法,或者可能只将链接键连接到S3和特定存储桶?可能还有其他认证方法吗?

"无服务器"解决方案是理想的,但我可以考虑涉及一些服务器端处理,不包括将文件上传到我的服务器然后发送到S3.

javascript authentication amazon amazon-s3 amazon-web-services

146
推荐指数
4
解决办法
11万
查看次数

拦截并覆盖来自WebView的HTTP请求

我的应用程序中有一个WebView,其中一些站点被打开(总是相同的,它是我自己的页面).该站点有一些JS代码,可以从远程主机加载一些图像.

我想截取对这些图像的请求(通过URL模式)并返回我自己的内容(即另一个图像),或者根据内部应用程序逻辑保持请求不变.

有可能吗?

编辑:目前的问题状态......

WebView有能力设置WebViewClient(如Axarydax所述).WebViewClient有两个有用的方法

  • shouldOverrideUrlLoading
  • onLoadResource

shouldOverrideUrlLoading能够拦截任何URL加载,如果加载是由页面交互触发的(即单击页面上的链接,WebView.loadURL("")不会触发此方法).它还可以通过返回false来取消URL加载.这种方法不可用,导致'它无法拦截页面资源的加载(和图像,我需要拦截的是这样的页面资源).

onLoadResource每次加载页面资源(和图像!thx到jessyjones)时都会触发,但是没有办法取消它.这使得这种方法也不适合我的任务.

android android-webview webviewclient

60
推荐指数
4
解决办法
10万
查看次数

在Forever下运行的NodeJS上正常关闭UNIX套接字服务器

我有一个NodeJS应用程序,它设置一个UNIX套接字来公开一些进程间通信通道(某种监视的东西).UNIX套接字文件放在os.tmpdir()文件夹中(即/tmp/app-monitor.sock).

var net = require('net');
var server = net.createServer(...);
server.listen('/tmp/app-monitor.sock', ...);
Run Code Online (Sandbox Code Playgroud)

我使用信号处理(SIGINT,SITERM等...)来正常关闭我的服务器并删除套接字文件.

function shutdown() {
    server.close(); // socket file is automatically removed here
    process.exit();
}

process.on('SIGINT', shutdown);
// and so on
Run Code Online (Sandbox Code Playgroud)

我的应用程序正在运行forever start ...以监视它的生命周期.

我的forever restartall命令有问题.当永远这样做时restartall,使用a SIGKILL来终止所有子进程.SIGKILL无法通过进程处理,因此我的应用程序在没有任何关闭过程的情况下死亡

问题是套接字文件在SIGKILL使用时不会被删除.重新启动子进程后,无法启动新服务器导致' listen调用将导致EADDRINUSE错误.

我无法在应用启动过程中删除现有的套接字文件导致'我不知道它是真正的工作套接字还是先前不干净关闭的痕迹.

所以,问题是......处理这种情况的更好方法是什么(SIGKILL和UNIX-socket服务器)?

unix-socket node.js forever

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

与BEM修饰符混淆

我在编写CSS时已经开始使用BEM方法,并且很少有我努力找到做特定事情的最佳方法.

我想在这里举一个简单的小组例子.

让我们说我正在使用BEM风格编写面板组件CSS.所以我的CSS可能如下所示:

.panel {}

.panel__titlebar {}

.panel__content { display: none; }
Run Code Online (Sandbox Code Playgroud)

面板可以是无铬的或带铬的.所以我为面板定义了另一个修饰符类:

.panel--with-chrome {
 border: 4px solid black;
 border-radius: 4px;
}
Run Code Online (Sandbox Code Playgroud)

现在假设,面板可以处于全屏/最大化状态,铬和标题栏也会消失.不是为面板和标题栏定义修改器,而是在父级(例如面板 - 全屏)上定义修改器是明智的,并且其余元素应相应地改变.所以现在我的CSS成了:

.panel--fullscreen {
 /* something has to be done here */
}

.panel--fullscreen .panel__titlebar { display: none; }
Run Code Online (Sandbox Code Playgroud)

要在全屏模式下删除镶边,我可以:

  1. 切换面板 - JS中的chrome类以及面板 - 全屏

  2. 覆盖面板内的chrome CSS - 全屏类.

首先是不好的,因为理想情况下我只想在JS中切换一个类(.panel - 全屏)来切换全屏模式.

第二个是糟糕的,因为我将不得不覆盖以前的CSS,这是一个不好的做法.

那么最好的方法是什么呢?感谢您的评论.

谢谢

css bem

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

无法在IE11中创建具有西里尔名称的XML节点

我需要创建一个包含节点的xml文档(使用JavaScript),该文档以俄语命名.

InvalidCharacterError尝试运行时我进入IE11doc.createElement("???????")

doc 是用.创建的 var doc = document.implementation.createDocument("", "", null)

在其他浏览器中,此代码无任何问题.

怎么解决?问题的根源是什么?

jsFiddle示例:http://jsfiddle.net/e4tUH/1/

我在connect.microsoft.com上的帖子:https://connect.microsoft.com/IE/feedback/details/812130/cant-create-xml-node-with-cyrillic-name-in-ie11

当前的解决方法:使用X-UA-Compatible元标记将IE11切换到IE10 并用于window.ActiveXObject(...)创建XML文档.

javascript xml internet-explorer internet-explorer-11 microsoft-edge

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

在IE中无法将功能从一个窗口传递到另一个窗口

我有一个两个窗口,一个是从另一个打开的,所以,我opener在"子"窗口中有一个属性.

父窗口在全局范围内具有一些功能,必须使用函数作为第一个参数调用它(它将用作回调).

这两个页面都是从同一个域打开的,因此,我没有任何同源策略限制(我希望如此)......

在子窗口中,我有这样的代码

if(window.opener) {
    window.opener.myFunction(function() { ... });
}
Run Code Online (Sandbox Code Playgroud)

一切正常,直到我尝试在IE中运行它.在这个浏览器中,收到的参数myFunction总是类型Object(选中typeof).代码myFunction是这样的:

window.myFunction = function(cb) {
    alert('Callback type is ' + (typeof cb));
    if(typeof cb == 'function') 
        cb();
    else
        alert('Not a function!');
}
Run Code Online (Sandbox Code Playgroud)

现场演示:http://elifantiev.ru/ie-opener-issue/first.html

问题是:

  1. 这是一个符合标准的行为吗?
  2. 这个问题有一些解决方法吗?

javascript internet-explorer function window.opener

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

iOS 7悬停/点击问题 - 在某些情况下没有触发点击

我有一种"小部件" - 一个具有一些丰富功能的数据表,如排序,行选择等.

在某些情况下(在DOM中放置小部件/嵌套),在iOS 7 Safari中不会触发它的行.

Widget使用的是jQuery 1.6.4

我无法发布整个小部件代码(你真的不会发生这种情况;)),但我可以将复制方案缩小到以下情况:

  1. 简单的html表,包含一些行,每行有两个cols
  2. 第一列包含一个"复选框" - 简单div,通常隐藏并变得可见,然后父行悬停.仅使用CSS触发可见性
  3. 每一行都有一个click事件处理程序.无论它做什么.在我的例子中,它将触发一个alert()
  4. Table的父元素是一个具有固定高度并overflow-y设置为的块元素auto
  5. 表大于它的父级,因此,某些表内容是隐藏的,可以通过滚动查看

这是一个jsFiddle:http://jsfiddle.net/822eG/4/

在任何桌面浏览器上,项目成功悬停,将触发单击.在iOS7上,悬停正在运行,但未触发单击.

注意:在iOS上,您必须点击两次才能触发click.首先点击将触发hover,你会看到一个"复选框",然后第二次点击必须触发a click,但它不会......

任何这些条件都需要重现问题.删除一个,它开始工作......

如果删除"复选框"外观 - 单击将起作用(http://jsfiddle.net/822eG/5/).

如果你删除高度修复 - 它将工作(http://jsfiddle.net/822eG/6/).

如果删除溢出滚动 - 它将起作用(http://jsfiddle.net/822eG/8/).

需要任何解决方法,但应保持功能不受影响.所以,我无法删除"复选框",大小修复,悬停,点击或溢出滚动.此外,改变HTML标记几乎不会发生.

注意我有一个解决方案 - 请参阅下面的答案.但是我仍然需要一个更好的解决方法来尽可能地使用CSS.

ADD:向Apple提交了一个错误#16072132

css click mobile-safari hover ios

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

git-flow:如何防止在发布分支上进行的某些更改合并回到开发

问题是关于git-flow方法的一些边缘情况

我有一些典型的git-flow历史,如下所示:

      o---o---o---o [release-3.5.0]
     /
----o---o---o---o---o [development]
Run Code Online (Sandbox Code Playgroud)

Git-flow告诉我们将release-3.5.0分支合并到开发中然后发布就绪了.因此,最终我们将获得所有更改,在发布分支进入开发分支.

      o---o---o---o 
     /             \
----o---o---o---o---o [development]
Run Code Online (Sandbox Code Playgroud)

现在想象一下,我们有一个承诺上发布分支"X"我们不要想在开发分支,例如它是某种这已经是更理智的方式固定在发展黑客/修补程序或其他的(按提交ÿIE)

      o---X---o---o [release-3.5.0]
     /
----o---o---o---Y---o [development]
Run Code Online (Sandbox Code Playgroud)

那么,主要问题是如何处理这种情况呢?如何防止此提交(或提交)重新进入开发?

git git-merge git-flow

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

requirejs - 在定义模块时构造模块,而不是在需要时构建模块

我有一组带有constructor-as-a-function的命名requirejs模块.

define('myModule', [ 'import1', 'import2' ], function(i1, i2) {
    ...
});
Run Code Online (Sandbox Code Playgroud)

我希望能够

  • 以corect顺序将模块附加到HTML 通过脚本标记使用 requirejs API
  • 使用 requirejs API 附加和使用模块

现在,然后我附加一个define调用文档的脚本,脚本成功加载,但模块没有定义,没有调用构造函数.

这是正常的行为吗?是否有一些解决方法来解决这个问题?

javascript requirejs

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

Google Chrome 开发人员工具 - 分析结果文件格式

我想知道 .cpuprofile 文件格式是否有任何(非)官方规范,这是在基于 Chromium 的浏览器的开发人员工具中使用 JavaScript 分析时生成的。

它是纯文本 JSON,因此很容易获取调用树数据,但我不明白如何获取每个函数的计时信息。

我也对每个函数的命中数感兴趣。

javascript profiling google-chrome google-chrome-devtools

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