乙巳🐍年

acc8226 的博客

获取 GET 请求内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var http = require("http")
var url = require("url")
var util = require("util")

http
.createServer(function (req, res) {
res.writeHead(200, { "Content-Type": "text/plain" })

// 解析 url 参数
var params = url.parse(req.url, true).query
res.write("网站名:" + params.name)
res.write("\n")
res.write("网站 URL:" + params.url)
res.end()
})
.listen(3000)
阅读全文 »

跨域资源共享(CORS) 是一种机制,它使用额外的  HTTP  头来告诉浏览器   让运行在一个 origin (domain) 上的 Web 应用被准许访问来自不同源服务器上的指定的资源。当一个资源从与该资源本身所在的服务器不同的域、协议或端口请求一个资源时,资源会发起一个跨域 HTTP 请求

比如,站点  http://domain-a.com  的某 HTML 页面通过   的 src 请求  http://domain-b.com/image.jpg。网络上的许多页面都会加载来自不同域的CSS样式表,图像和脚本等资源。

出于安全原因,浏览器限制从脚本内发起的跨源 HTTP 请求。 例如,XMLHttpRequest 和 Fetch API 遵循同源策略。 这意味着使用这些 API 的 Web 应用程序只能从加载应用程序的同一个域请求 HTTP 资源,除非响应报文包含了正确 CORS 响应头。

浏览器

安全限制: 让浏览器禁止检查, 不推荐

XHR 请求

jsonp(不推荐使用)
这种方案其实我是不赞同的,第一,在编码上 jsonp 会单独因为回调的关系,在传入传出还有定义回调函数上都会有编码的”不整洁”.简单阐述 jsonp 能够跨域是因为 javascript 的 script 标签,通过服务器返回 script 标签的 code,使得该代码绕过浏览器跨域的限制。并且在客户端页面按照格式定义了回调函数,使得 script 标签返回实现调用

阅读全文 »

JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。

但在处理像 TCP 流或文件流时,必须使用到二进制数据。因此在 Node.js 中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。

Buffer 与字符编码

Buffer 实例一般用于表示编码字符的序列,比如 UTF-8 、 UCS2 、 Base64 、或十六进制编码的数据。 通过使用显式的字符编码,就可以在 Buffer 实例与普通的 JavaScript 字符串之间进行相互转换。

1
2
3
4
5
6
7
const buf = Buffer.from("runoob", "ascii")

// 输出 72756e6f6f62
console.log(buf.toString("hex"))

// 输出 cnVub29i
console.log(buf.toString("base64"))
阅读全文 »

Web 服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,Web 服务器的基本功能就是提供 Web 信息浏览服务。它只需支持 HTTP 协议、HTML 文档格式及 URL,与客户端的网络浏览器配合。

大多数 web 服务器都支持服务端的脚本语言(php、python、ruby)等,并通过脚本语言从数据库获取数据,将结果返回给客户端浏览器。

目前最主流的三个 Web 服务器是 Apache、Nginx、IIS。

Web应用架构

  • Client - 客户端,一般指浏览器,浏览器可以通过 HTTP 协议向服务器请求数据。
  • Server - 服务端,一般指 Web 服务器,可以接收客户端请求,并向客户端发送响应数据。
  • Business - 业务层, 通过 Web 服务器处理应用程序,如与数据库交互,逻辑运算,调用外部程序等。
  • Data - 数据层,一般由数据库组成。

使用 Node 创建 Web 服务器

Node.js 提供了 http 模块,http 模块主要用于搭建 HTTP 服务端和客户端,使用 HTTP 服务器或客户端功能必须调用 http 模块,代码如下:

阅读全文 »

Stream 是一个抽象接口,Node 中有很多对象实现了这个接口。例如,对 http 服务器发起请求的 request 对象就是一个 Stream,还有 stdout(标准输出)。

Node.js,Stream 有四种流类型:

  • Readable - 可读操作。
  • Writable - 可写操作。
  • Duplex - 可读可写操作.
  • Transform - 操作被写入数据,然后读出结果。

所有的 Stream 对象都是 EventEmitter 的实例。常用的事件有:

  • data - 当有数据可读时触发。
  • end - 没有更多的数据可读时触发。
  • error - 在接收和写入过程中发生错误时触发。
  • finish - 所有数据已被写入到底层系统时触发。
阅读全文 »
0%