Tag: 谷歌浏览器

如何将Google Chrome用作node.js服务器?

我复制/粘贴节点js hello world示例到一个html文件中 <html> <head> <script> var http = require("http"); http.createServer(function (request, response) { // Send the HTTP header // HTTP Status: 200 : OK // Content Type: text/plain response.writeHead(200, {'Content-Type': 'text/plain'}); // Send the response body as "Hello World" response.end('Hello World\n'); }).listen(8081); // Console will print the message console.log('Server running at http://127.0.0.1:8081/'); </script> </head> […]

Chrome在尝试传输OGG文件时会杀死响应

我有一个节点的JS服务器,将OGG文件stream(附加)到另一端的HTML5audio多个HTTP响应。 在Firefox中一切正常,但Chrome似乎在第一个OGG文件被写入(但不奇怪的Mp3)后杀死响应。 这是当前代码的一个片段: res.writeHead(200, { "Content-Type": "audio/ogg", 'Pragma': 'no-cache', 'Cache-Control': 'no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0', 'Connection': 'keep-alive', 'Transfer-Encoding': 'chunked', }); res.write(audioData); 有任何想法吗?

networking推送未知问题,WebPushError“收到意外的响应代码”400

在使用GCM和chrome进行networking推送的过程中。 我最近遇到了这个问题(几个小时前,一切仍然正常) 我不确定是否由于GCM的一些变化或云的停机时间而发生这种情况…任何信息将不胜感激。 我的代码 var payload = JSON.stringify({ title: 'notification title', body: 'message body' }); webPush.sendNotification(params.endpoint, { userPublicKey: params.userPublicKey, userAuth: params.userAuth, payload: payload }).then(function (res) { // console.log of stuff }) .catch(function(error){ console.log(error); process.exit(1); }); 跟踪: { WebPushError: Received unexpected response code at IncomingMessage.<anonymous> (/var/www/***/pwa/node_modules/web-push/index.js:264:20) at emitNone (events.js:91:20) at IncomingMessage.emit (events.js:185:7) at endReadableNT (_stream_readable.js:926:12) at […]

检测Google Chrome页面预取

我正在构build一个跟踪和增加网站访问次数的简单工具。 这是简单的: 当服务器收到一个GET请求时,会将该网站数据库中的计数器增加1。 不过,我正在使用Google Chrome的预渲染引擎(“预测networking操作以提高页面加载性能”)出现问题。 该网站是www.domain.com,只要您在浏览器的地址栏中input域名www.domain.com(无需按Enter键),Chrome会发送一个GET请求来预取页面,导致服务器logging访问并将数据库中的计数器增加1.此后,如果用户按Enter键实际加载网页,则服务器将看到另一个GET请求进入,从而再次增加计数器。 这导致在数据库中logging2次重复访问。 据我所知,谷歌浏览器只下载页面,但不执行它,但只要我的服务器获得GET请求,计数器增加。 问 :有什么办法可以解决这个问题吗? 优选地,我想检测是否是预取或实际用户访问网站。

Chrome浏览器/火狐浏览器发送两个邮件正好5秒钟,只有一个调用来获取Nodejs 8.0.0服务器

注:这不是预检选项,它不是favicon或任何其他类似的。 这实际上是2 POSTS。 下面有一个截图,更清晰地显示出来。 我的规格/版本: macOS Sierra版本10.12.3 Chrome版本61.0.3128.0(官方版本)dev(64位) 节点v8.0.0 我有一个服务器,使用setTimeout等待10秒后才响应。 我有一个前端,使单个POST到服务器。 使用wireshark,我可以看到浏览器实际上做了2个POST,第二个在t + 5s。 服务器看到这两个POST并对两者都响应。 前端只能得到第二个POST的结果。 在下面的示例中,您将看到,获取实际需要15秒才能完成,而不是您希望从服务器中超时的10秒。 该呼叫是CORS,只有当服务器花费超过5秒的时间来响应时才会发生。 这里发生了什么,我该如何阻止它呢? 这是一个最小的复制: server.js(与节点一起运行) var http = require("http"); // A counter for the requests var counter = 0; var server = http.createServer(function(request, response) { // Closure to prevent the request number from changing with the counter. (function(requestNumber) { […]

简单的Nodejs Web服务器总是发送文本/普通的css和js文件

在Nodejs创build一个简单的Web服务器时,我Nodejs了一个奇怪的问题。 http服务器正常运行,并接受请求和响应。 但是,由于某种原因,它总是希望发送一种content-type:的text/plain 。 例如.js和.css文件总是以text/plain而通常应该以text/css或application/javascriptforms发送。 Chrome浏览器,我用来testing这个,总是抱怨资源的MIMEtypes: Resource interpreted as Stylesheet but transferred with MIME type text/plain: "http://localhost:3000/test.css". Resource interpreted as Script but transferred with MIME type text/plain: "http://localhost:3000/test-client.js". 这最终意味着什么是从未应用到页面的css 。 我已经添加了一些日志logging,看起来http响应正在发送正确的MIMEtypes。 我创build了一个我正在做的准系统版本。 希望有人能指出我编写的缺陷: test.js var http = require('http'), fs = require('fs'), url = require('url'), path = require('path'); var contentTypes = { '.html': 'text/html', '.css': "text/css", […]

为什么在{{} + 1`在Chrome和Firefox中获得数字1,而在Node.js中使用' 1'?

在Javascript中增加是非常惊人的。 在Chrome和Firefox中, {} + 1等于数字1; 但在Node.js中, {} + 1等于string'[object Object] 1'。 另一方面,在浏览器和Node.js中, 1 + {}等于'1 [object Object]'。 谁能解释为什么在浏览器中{} + 1等于1?

是否有使用Chromedebugging协议/ API的浏览器库?

Chrome提供了一个很好的远程debuggingAPI ,这在很多情况下都很有用。 我发现了一个不错的,丰富的客户端库,用于从Node.js服务器环境中使用它: https : //github.com/cyrus-and/chrome-remote-interface – 从连接到浏览器的服务器,这很好用。 是否有一个类似的库可以在浏览器内部使用? 那么无论是从一个浏览器实例到以debugging模式启动的另一个浏览器实例,还是同一个浏览器实例? 我知道可以通过一些WS库的操作来做到这一点,但如果可能的话,我想避免低级的工作。 上面的服务器库做了大部分的抽象工作。 浏览器中运行的JavaScript有什么可比性吗?

在不同的端口之间共享Cookie

我有一个应用程序1(C#)托pipe在端口:8030和应用程序2(nodejs)托pipe在端口:3030。 两者都在本地主机上。 请求工作stream程如下: 浏览器向应用程序1发送请求 应用程序1发回一些cookie 稍后在浏览器上发送请求到应用程序2 ^问题是最后一步,cookies不包含在请求中。 我已经尝试/理解的事情: 我知道这是一个同源策略限制,并且由于不同的端口号,浏览器将它们视为不同的域。 在应用程序1(它使用System.Web.HttpCookie)我试图设置域为端口特定(“127.0.0.1:3030”),但似乎浏览器不接受或忽略它。 //c# code var testCookie1 = new HttpCookie("Test", "testValue"); testCookie1.Domain = "127.0.0.1:3030"; testCookie1.Path = "/"; testCookie1.Expires = DateTime.Now.AddDays(1); Response.SetCookie(testCookie1); var testCookie2 = new HttpCookie("Test2", "testValue2"); testCookie2.Domain = "127.0.0.1"; testCookie2.Path = "/"; testCookie2.Expires = DateTime.Now.AddDays(1); Response.SetCookie(testCookie2); 服务器发送一个附有端口号的cookie,但浏览器似乎忽略了它。 这里是我的阿贾克斯调用: var request = $.ajax({ url: 'http://127.0.0.1:3030/SomeTask', type: 'POST', crossDomain: […]

在nodejs和chrome中让vs性能

当我在chrome和nodejs中testing以下代码时,我得到以下内容: 铬: for循环VAR: 24.058ms 用于LET的循环: 8.402ms 的NodeJS: for循环VAR: 4.329ms for循环与LET: 8.727ms 根据我的理解,由于块范围LET是更快的铬。 但有人可以帮我理解为什么它在NodeJS相反? 或者我错过了什么? "use strict"; console.time("for loop with VAR"); for (var i = 0; i < 1000000; i += 1) { // Do nothing } console.timeEnd("for loop with VAR"); console.time("for loop with LET"); for (let i = 0; i < 1000000; i += 1) […]