V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  jinliming2  ›  全部回复第 31 页 / 共 57 页
回复总数  1136
1 ... 27  28  29  30  31  32  33  34  35  36 ... 57  
2020-07-26 14:00:59 +08:00
回复了 ChunkitAu 创建的主题 Java 关于 cors 跨域配置,不填 * 该怎么写?
首先,浏览器发生跨域请求时分为两种,简单请求和需要预检的请求。

简单请求是指:
1. 请求方法仅限 GET 、POST 、HEAD 三种(你的 PUT 、DELETE 、OPTIONS 就不属于了)
2. 请求头仅限:(你的 X-Requested-With 、Authorization 就不属于了,Origin 本身就属于禁止头,是浏览器自动设置的,你不可以手动设置)
- Accept
- Accept-Language
- Content-Language
- Content-Type (仅限 application/x-www-form-urlencoded 、multipart/form-data 、text/plain 三者之一,你的 application/json 就不属于)
- DPR
- Downlink
- Save-Data
- Viewport-Width
- Width
3. 没有在 XMLHttpRequest.upload 添加事件监听
4. POST 没有使用 ReadableStream

不满足简单请求的,就需要进行预检。

对于简单请求,服务器需要根据请求头中的 Origin 字段判断是否允许这个域来请求,允许的话,就在响应头中给出 Access-Control-Allow-Origin,值就和请求头的 Origin 一样就行。
简单请求只需要给 Access-Control-Allow-Origin 这一个头就行。

如果不是简单请求,那么在请求前,浏览器会自动发出一个 OPTIONS 预检请求,其中可能包含 Access-Control-Request-Method 和 /或 Access-Control-Request-Headers,指出申请使用的请求方法和携带的请求头。
服务器判断,是否允许,允许的话,就根据需求带上这些头:
Access-Control-Allow-Origin 指定允许的 Origin,和上面简单请求一样。
Access-Control-Allow-Methods 指定允许的请求方法,必须包含 Access-Control-Request-Method 中申请的值,否则跨域请求失败。
Access-Control-Allow-Headers 指定允许带的请求头,和 Access-Control-Allow-Methods 类似。
Access-Control-Expose-Headers 指定哪些响应头可以被访问,默认情况下,请求方只能访问到 Cache-Control 、Content-Language 、Content-Length 、Content-Type 、Expires 、Last-Modified 、Pragma 几个头,如果你的响应里带了其他头需要被请求者访问的话,需要加上这个头来指定。
如果服务器要求客户端自动携带身份信息( cookie 、Authorization 头、TLC 客户端证书),那么需要设置 Access-Control-Allow-Credentials: true 。否则请求不会自动带这些信息。
浏览器收到预检的响应之后,再根据响应里的授权,决定是跨域失败,还是继续发送跨域请求。
2020-07-26 13:01:28 +08:00
回复了 johnsonhk 创建的主题 云计算 关于一个超简单 CIDR 问题,云安全组不知如何写
仅对单一 IP 授权,那么答案是 192.168.1.6/32 。
/0 的情况一般统一写成 0.0.0.0/0 表示为任意 IP 。因为前面写任意 IP 在这里都没有意义了。
这里写 192.168.1.6/0 和写 0.0.0.0/0 是一样的,都表示任意 IP 。

后面那个数字表示子网掩码的位数。
首先把 IP 地址转成 8 位二进制,( 192.168.1.6 就变成了 11000000.10101000.00000001.00000110 )。
然后 /8 就表示匹配前面 8 位和这个一样,后面 24 位任意的 IP 。
/16 就表示匹配前面 16 位和这个一样,后面 16 位任意的 IP 。
/24 就表示匹配前面 24 位和这个一样,后面 8 位任意的 IP 。
/32 就表示匹配所有 32 位和这个都一样的 IP,也就是仅匹配这一个 IP 。
/0 就表示匹配所有 32 位都任意的 IP,也就是匹配任意 IP 地址。
/ 后面跟任意 [0, 32] 之间的数,表示匹配前面 n 位一样,后面的 32 - n 位任意的 IP 。
实际写的时候,通常把后面 32 - n 位归零,然后再转回十进制。
2020-07-26 12:46:11 +08:00
回复了 gantleman 创建的主题 程序员 我们来为“死锁的四个必要条件”加一条
我的理解,你自己加的这个“隐含假设的条件”不对,多线程并不是死锁的条件,单线程下依旧会出现死锁。
只不过实际开发在单线程条件下,因为通常不会出现资源访问冲突,所以单线程开发是不会加锁的,也就不会死锁。
但是,如果在单线程下使用了锁,那么如果资源获取、释放的顺序不对,也会产生死锁。也就是条件中的循环依赖,自己依赖自己。
最简单的例子就是,对一个资源进行加锁访问,在没有释放的时候,再对其进行加锁。这符合四个条件。

真实的情况可能会复杂一些,就是在多线程环境下,其中某一个线程出现了加锁、释放顺序不对的情况。
2020-07-23 23:03:33 +08:00
回复了 saltbo 创建的主题 程序员 goget, 一个比 go get 更方便的装包工具
顺带一提,如果使用 Go 官方工具链的话,go get 几乎都没有用过了。
新项目只要 go mod init ...,然后建个 go 文件开始写就行了,历史装过的包会自动提示、goimports 自动导入,历史没装过的包,直接复制包名放到 import 语句里就行,也不需要 go get,新包会在你 go run 或者 go build 的时候自动下载安装,并更新 go.mod 文件。

讲真,好久都没用过 go get 了……
更新包的话,VSCode 里打开 go.mod 文件有版本提示,点击一下就自动更新了……
2020-07-23 22:51:11 +08:00
回复了 saltbo 创建的主题 程序员 goget, 一个比 go get 更方便的装包工具
@saltbo 首先,使用 Go modules 之后,GOPATH 是依旧存在的。
根据最新的 go 基础文档 https://golang.org/doc/code.html,你安装的第三方包都会被下载到 GOPATH 下的 pkg/mod 目录中:

Module dependencies are automatically downloaded to the pkg/mod subdirectory of the directory indicated by the GOPATH environment variable. The downloaded contents for a given version of a module are shared among all other modules that require that version, so the go command marks those files and directories as read-only.

goimports 会根据 $GOPATH/pkg/mod 下已经安装过的包来实现自动导入(前提是你的项目包含 go.mod ,是一个 Go Modules 项目,否则 goimports 也不会帮你),而 goimports 属于 go 官方工具,所以可以认为是官方的行为。

再说 Goland,在 Go modules 之前,go 要求将项目都放在 $GOPATH/src 下,这也就是“GOPATH 开发模式”的由来。在 Go modules 出来之后,Goland 区分两种模式,Go 和 Go Modules 。
Go 模式,你的项目必须放在 $GOPATH/src 下( Goland 提供了项目 GOPATH 功能,可以临时设置项目路径为 GOPATH ),然后你 go get 的包也会存在 $GOPATH/src 下,这样 Goland 就可以自动导入 $GOPATH/src 下的包了。
而 Go Modules 模式下,Goland 就完全只认 go.mod 中有的包,go.mod 中没有的包完全不认,不会自动去 $GOPATH/pkg/mod 中导入。

但是 Goland 在代码中右键 -> Go Tools -> Goimports File 却可以自动去 $GOPATH/pkg/mod 导入的,因为这个功能调用的是官方的 goimports 工具。但是虽然自动导入了,Goland 依旧显示为红色,不认,你还得再右键 Show Context Actions -> Sync dependencies 同步一遍。

由此,我认为这是 Goland 没遵循 Go Modules 所产生的 bug 。
而 VSCode 因为自身不提供功能,所有功能都依赖 Go 的官方工具,所以可以按照规则自动完成。
GOPATH 开发模式,代码必须放在 $GOPATH/src 下,所有装的包也都在 $GOPATH/src 下。
Go Modules 开发模式,项目中包含 go.mod 文件,所有装的包都在 $GOPATH/pkg/mod 下,按版本共享。

所以你附言 3 说的“搞了半天你们都还在用 GOPATH”是不对的,根据规则,只要 go 版本足够,项目中只要有 go.mod 就是 Go Modules 模式了。Goland 不支持提示只是因为 Goland 没有用官方工具链而产生的 bug,使用 Goland 右键菜单中的官方 goimports 工具可以正确识别 Go Modules 的依赖包。
2020-07-23 21:36:34 +08:00
回复了 pabupa 创建的主题 JavaScript 啊?这……
String 是类,你可以 new String
"" 是 string,基本数据类型之一,不是 object
既然连 object 都不是,怎么可能 instanceof ?
"" !== new String(""),因为数据类型不一样,一个是 string,一个是 object 。

顺便,@pabupa #7,你能把那一段复制完吗?
可以通过 new Object(),Object.create()方法,或者使用字面量标记**(初始化标记)**初始化对象。 **一个对象初始化器,由花括号 /大括号 ({}) 包含的一个由零个或多个对象属性名和其关联值组成的一个逗号分隔的列表构成**。
所以,只有 {} 出来的才是对象!
2020-07-19 17:13:32 +08:00
回复了 KingBillSame 创建的主题 奇思妙想 能不能开发个 reCAPTCHA 自动识别
经常全世界各个国家到处跑的,或者是一个屋子里住了上百个甚至上千个人的,或是常年住在服务器机房的,让你选个验证码证明自己不是机器人不是很正常吗?
2020-07-19 10:38:19 +08:00
回复了 naizhao 创建的主题 DNS DNSPod 的 DoT 和 DoH 对外公测了
@HalloCQ 日常用 dig 挺多的,然后每次用的时候第一次总会忘加 +nocookie,然后等 3 秒才反应过来……体验很差……
2020-07-18 13:36:27 +08:00
回复了 Piazzy 创建的主题 程序员 CSDN 现在都沦落成什么了,满屏的广告帖子
CSDN 虽然……但是流量还是挺多的,我看我 GitHub 项目的访客来源,一多半都是从 CSDN 导流过来的……
因为搜索引擎霸屏,很多人还是看 CSDN 的多。
2020-07-18 13:32:19 +08:00
回复了 naizhao 创建的主题 DNS DNSPod 的 DoT 和 DoH 对外公测了
还是继续用 https://dns.google 吧……
2020-07-18 13:30:43 +08:00
回复了 naizhao 创建的主题 DNS DNSPod 的 DoT 和 DoH 对外公测了
DNSPod 不能直接用 dig 解析,dig 要加 +nocookie 参数的问题一直没解决,所以我很久前就放弃 DNSPod 改用 Ali 了……
dig baidu.com @119.29.29.29 不响应
dig baidu.com @119.29.29.29 +nocookie 这样才行

DoT/DoH 不能解决污染的话,那么用处就只剩下防运营商劫持了……
如果运营商没有劫持的话,那么感觉就没啥用处了。
建这么一个账户,除了 uid 不是 0,其他和 root 完全一样,拥有所有权限。那么对于你这个用户来说,这个账户和 root 账户的区别在哪里?为啥要建这么个账号?如果是用这样的一个超级特权的账号,那么直接用 root 账号不行吗?
难道只是因为“绝大多数情况下,不要使用 root”?所以就建一个和 root 几乎一样,但名字不叫 “root” 的账户来用?人家说的是“root”这个账户名吗?人家说的是超级管理员权限……

现在的 sudo 是给你一个机会,仔细考虑一下,确定真的要执行这条指令。就类似于删除文件的时候要加个二次确认提示(现在很多发行版都这么做了,至少 root 权限的删除是会加二次确认的)。

就是有人喜欢 sudo 里配 NOPASSWD ALL,相当于取消思考,sudo 就等于 su root 然后随便跑。这跟直接用 root 账户有啥区别? emmm,好吧,区别是这个要加一个 sudo 前缀,也算是象征性的“二次确认”了吧(前提是你日常没有 sudo 的权限,发现权限不足的时候思考一下再加 sudo )。

日常使用,那是尽可能不提权,如果你日常 sudo 很频繁的话,想一想是不是自己的使用方式有问题?
2020-07-15 22:04:00 +08:00
回复了 kuanng 创建的主题 程序员 怎么戒掉喜欢“刷新”这个习惯啊?
@raaaaaar win 下没有 F* 功能键,让我养成了 Ctrl+R 的习惯……
2020-07-15 22:01:33 +08:00
回复了 andj4cn 创建的主题 Linux 求教 Ubuntu + Win(virtualbox 虚拟机) 工作模式是否可行
我目前就是这样,笔记本,4 核双线程 APU,16 G 内存。Linux 主机 + Windows 虚拟机( VirtualBox Windows 10 LTSC ),使用上没有问题。
VirtualBox 装最新的 Windows 10 2004 会有透明度的问题。

之前试过两台电脑,Windows 电脑接显示器,然后 Linux 电脑把 X11 桌面通过 TCP forward 到 Windows 上去显示。但是估计是我的局域网带宽不足,画面绘制有明显的延迟(到不是卡顿,就类似于网页上打开一张特别大的图片那样,加载慢)。也可以单独 forward 单个应用,会刘畅一些。
2020-07-12 08:54:35 +08:00
回复了 catvoo 创建的主题 奇思妙想 关于隐私的突发奇想
@ipadpro4k #2 的确,便利和隐私不可兼得,但他们只觉得你会为了便利而放弃隐私。
如果你想为了隐私而牺牲一些便利,你会发现很困难,不是逻辑上行不通,而是他们不允许。
比如,聊天软件收集通讯录给你推荐好友,不需要!购物软件收集搜索购买记录给你推荐商品,不需要!网站上的广告联盟收集你的浏览记录给你推广告,不需要!
你的选择,要么忍受隐私侵犯,要么拒绝使用他们的产品,要么使用各种插件外挂来限制软件的行为(没错,手机上的权限管理也可以算作系统级的外挂)。
GDPR 的出现就是想从产品上解决问题,虽说实行的还不好……
2020-07-12 08:41:14 +08:00
回复了 voicechoice 创建的主题 分享创造 一个介绍好音乐的网站:好音乐发现计划
个人感觉网易云推荐的就不错,也不是以热度来推荐的,每天都能推荐好多冷门音乐,甚至是没几个评论的音乐,而且是根据个人口味来推的……
2020-07-06 13:14:35 +08:00
回复了 K120 创建的主题 分享创造 每天坚持学习一个 Linux 命令
学了不用,估计三天不看就忘了……其实现查就行,知道 man 命令就行……
常用的,怎么也都肌肉记忆了吧……
2020-07-06 13:12:34 +08:00
回复了 pluvet 创建的主题 分享创造 你记得住 VS/VSCode/IDEA 的海量快捷键吗?
VSCode 的 windows 版和 linux 版的快捷键还有区别,好难受……
专业,可靠,看能坚持多久
> 信息安全:如果 ID 是连续的,恶意用户的爬取工作就非常容易做了,直接按照顺序下载指定 URL 即可;如果是订单号就更危险了,竞争对手可以直接知道我们一天的单量。所以在一些应用场景下,会需要 ID 无规则、不规则。

这里说订单号必须 ID 无规则,不然会被竞争对手直接知道一天的单量。
那么我问个问题,你这个算法怎么保证信息安全?因为你中间使用的是自增 id,所以我只需要把中间那个自增 id 取出来,然后每天减一下,就能知道你一天生成了多少 id ?
中间用时间戳好理解,数值变化一天固定就是变一天的时间戳。但自增 id ?
1 ... 27  28  29  30  31  32  33  34  35  36 ... 57  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2632 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 15:51 · PVG 23:51 · LAX 07:51 · JFK 10:51
Developed with CodeLauncher
♥ Do have faith in what you're doing.