# 网络

返回:前端基础

# 同源与跨域(CORS)

TIP

同源政策是网站安全的基础。https://domain-a.com 只能存取自己网站裡的资源 (图片、影片、源码代等),不允许网站 https://domain-b.com 来存取。想要存取跨来源资源必须在某些特定情况下才被允许。

# 怎麽判断同不同源

只要 scheme、domain、port 一样就会被视为同源 (same-origin),其他则是不同源

在某些情况下跨来源是被允许的,不受同源策略限制

  • 跨来源嵌入通常被允许 (embed)
    • 像范例的 <script src=”…”></script><link rel=”stylesheet” href=”…”><iframe>、图片 <img><video>、或是 @font-face <object><embed>.等等都是跨来源嵌入
  • 跨来源写入通常被允许 (writes)
  • 跨来源读取通常被禁止 (reads)
    • domain-a.com 不能读取 domain-b.com 的 cookieXMLHttpRequestFetch API 也都无法被读取

WARNING

同源政策 (Same Origin Policy) 允许 HTML tag 产生的跨来源写入 (write)/嵌入 (embed)/读取 (read),但对于 JS 的跨来源 write/embed/read 是有限制的

TIP

同源政策是浏览器专属,所以才会发生用 postman 可以拿到 API 回应但放到网站上就是会失败的状况。

# 怎么设置

// 还是会针对特定网站开权限
Access-Control-Allow-Origin: https://foo.example

// 可以设定允许哪些 method,defult 是全部方法
Access-Control-Request-Method: POST, GET

// 允许 client side 带 cookie 等验证,defult 是 false
Access-Control-Allow-Credentials: true
1
2
3
4
5
6
7
8

# preflight request

不是 simple request 都会先发一个 preflight request 确定 server 端有设定正确的相关 Http-Header,也就是会先问 server 是否允许这个 request,允许的话才会正式 request。像 HTTP PUT/DELETE method,或 Content-Type: application/json 都会先发 preflight request。

# 有同源政策的保护,我的网站就是安全的吗

Same Origin Policy 只是最基本的保护而已,实际上 attackers 还是可以聪明地找到漏洞攻击你的网站。例如 Cross-site scripting (XSS)可以欺骗网站来绕过同源政策的保护,这是一个很大的问题,因为同源政策下浏览器信任底下所有资料存取都是安全的,但这样被恶意注入利用很有可能就让你网站挂掉,更严重是用户敏感资料被洩漏,应该被保密的资料被坏人利用。

HTML5 Security Cheatsheet 这个网站蛮酷的,提供各种 XSS 变形手法程式以及范例可以上去玩玩看

# 相关错误收集

WARNING

Cors Policy Issue:The request client is not a secure context and the resource is in more-private address space private.

解决方案

  1. 两种资源都改成https
  2. 做代理或改dns 两种资源都改成 内网或者外网ip
  3. 配置chrome选项为disable chrome://flags/#block-insecure-private-network-requests或者访问者资源加响应头 Access-Control-Allow-Private-Network

# 免费公共DNS

# DNSPod Public DNS

拥有 80 多条国内线路和 4 条海外线路,有 BGP Anycast 技术,也是国内首家支持谷歌 ECS (edns-client-subnet) 协议的公共 DNS 解析服务。它只使用一个 IP,但有三地集群容灾和秒级自动故障切换,在国内大多数地方的测速数据都非常好,值得推荐。

TIP

IPv4 地址
首选:119.29.29.29

# AliDNS 阿里公共 DNS 解析服务

宣称全球数百台服务器组成的集群,拥有充足的带宽资源,目标是成为国内互联网基础设施的组成部分,支持 BGP Anycast 以及 ECS 技术。

TIP

IPv4 地址

首选:223.5.5.5

备用:223.6.6.6

# 114 DNS

114 DNS 在国内的用户量相当巨大,其 DNS 解析成功率高,与 ISP 的 DNS 相比,能访问更多的国内外网站;号称纯净、无劫持、无需再忍受被强插广告或粗俗网站之痛苦;114DNS 做得比较早,有一定的技术积累,稳定性不错,尽管速度比前两者差一点点,但也都能让人满意。它还有一个特色,就是根据不同用途可以选择不同的 DNS 组。

TIP

常规公共 DNS (干净无劫持)

首选:114.114.114.114 、备选:114.114.115.115

拦截钓鱼病毒木马网站 (保护上网安全)

首选:114.114.114.119、备用:114.114.115.119

拦截色情网站 (保护儿童)

首选:114.114.114.110、备用:114.114.115.110

# 百度 BaiduDNS

百度 DNS 公共解析服务,支持 ipv4 和 ipv6。作为中国最大的搜索引擎,百度拥有一流的基础设施和强大技术实力,国内速度相当快!该服务快速稳定无劫持,智能拦截恶意网站,支持 BGP Anycast 和 ECS 技术。

TIP

IPv4 地址:180.76.76.76

IPv6 地址:2400:da00::6666

# 360 DNS 派 (DNSpai Public DNS)

DNS 派是由 360 出品的免费公众 DNS 解析服务。它可以让网上冲浪更加稳定、快速、安全;为家庭拦截钓鱼网站,过滤非法网站,建立一个绿色健康的网上环境;为域名拼写自动纠错等。

TIP

首选(电信/移动/铁通):101.226.4.6

备选(电信/移动/铁通):218.30.118.6

首选(联通):123.125.81.6

备选(联通):140.207.198.6

# CNNIC sDNS

sDNS (SecureDNS,简称 sDNS) 是由中国互联网络信息中心 CNNIC 与国内外电信运营商合作推出的免费公共云解析服务,旨在为用户提供高速、安全、智能的上网接入解析服务。sDNS递归云解析服务采用 IP Anycast+BGP 技术跨区域、跨运营商的分布式异构部署,比运营商提供的 DNS 更快更稳定。

TIP

IPv4 地址

首选:1.2.4.8

备用:210.2.4.8

# OneDNS

OneDNS 是一个安全、快速、免费的小众 DNS 服务。它能屏蔽恶意网站、摆脱无良 ISP 的DNS污染与劫持。同时横跨南北的高速线路加速您的网络连接。

TIP

IPv4 地址

首选:117.50.11.11

备用:117.50.22.22



# Google Public DNS (8.8.8.8)

来自 Google 提供的免费全球公共 DNS 服务,主要为了改进网络浏览速度、改善网络用户的浏览体验。这个基本上不用多做什么介绍了,可能它也是目前全球范围内使用量最大的公共 DNS 了,老牌、稳定、技术强劲。

TIP

IPv4 地址

首选:8.8.8.8

备用:8.8.4.4

IPv6 地址

首选:2001:4860:4860::8888

备用:2001:4860:4860::8844

# CloudFlare DNS (1.1.1.1)

CloudFlare DNS 是号称全球最快的 DNS 服务 (当然天朝不算在全球范围内 >_<), CloudFlare 是全球最大的 CDN / DDOS 防护服务提供商之一 (在国内与百度云加速合作),其遍布全球的基础设施资源极其丰富,资金和技术实力相当雄厚。在国外实测速度相当强劲,目前我已将海外的 VPS全部换到此 DNS,解析速度非常快,相当值得推荐!

TIP

IPv4 地址

首选:1.1.1.1

备用:1.0.0.1

IPv6 地址:

首选:2606:4700:4700::1111

备用:2606:4700:4700::1001

# IBM Quad9 (9.9.9.9)

IBM 、Global Cyber Alliance 和 Packet Clearing House 合作推出的免费 Quad9 公共 DNS 服务 (9.9.9.9),主打安全,它会智能屏蔽恶意网址、僵尸网络、钓鱼攻击和其它恶意主机相关联的域名,而且更注重隐私保护。对安全有需求的朋友可以使用这组 DNS。

TIP

IPv4 地址

首选:9.9.9.9

备用:149.112.112.112

IPv6 地址

首选:2620:fe::fe

备用:2620:fe::9

# Cisco OpenDNS

TIP

IPv4 地址

首选:208.67.222.222

备用:208.67.220.220

IPv6 地址

首选:2620:0:ccc::2

备用:2620:0:ccd::2

# Hurricane Electric Public DNS (HE)

HE Public DNS

IPv4 地址

首选:74.82.42.42

备用:66.220.18.42

IPv6 地址

首选:2001:470:20::2

备用:2001:470:0:9d::2

# 科摩多 Comodo SecureDNS

科摩多公共 DNS 服务

IPv4 地址

首选:8.26.56.26

备用:8.20.247.20

# Verisign Public DNS

Verisign Public DNS

IPv4 地址

首选:64.6.64.6

备用:64.6.65.6

IPv6 地址

首选:2620:74:1b::1:1

备用:2620:74:1c::2:2

# Neustar Recursive DNS

Neustar Recursive DNS

IPv4 地址

首选:156.154.70.1

备用:156.154.71.1

IPv6 地址

首选:2610:a1:1018::1

备用:2610:a1:1019::1

# ORACLE Dyn Public DNS

Dyn Public DNS

IPv4 地址

首选:216.146.36.36

备用:216.146.35.35

# Level3 Public DNS

Level3 Public DNS

IPv4 地址

首选:209.244.0.3

备用:209.244.0.4

# Alternate DNS

Alternate DNS

IPv4 地址

首选:23.253.163.53

备用:198.101.242.72



# 香港宽频 / HKBN

香港宽频 DNS

IPv4 地址

首选:203.80.96.10

# 和记环球电讯 DNS

::: tip和记环球电讯 DNS

IPv4 地址

首选:202.45.84.58

备用:202.45.84.59 :::

# Pacific SuperNet DNS

Pacific SuperNet DNS

IPv4 地址

首选:202.14.67.4

备用:202.14.67.14



# 中华电信 / HiNet

中华电信公共 DNS

IPv4 地址

首选:168.95.1.1

备用:168.95.192.1

IPv6 地址

首选:2001:b000:168::1

备用:2001:b000:168::2

# 数位联合电信 / Seednet

数位联合电信 DNS

IPv4 地址

首选:139.175.252.16

备用:139.175.55.244

# 台湾网路资讯 / TWNIC Quad101 Public DNS

台湾网路资讯 TWNIC Quad101 Public DNS

首选:101.101.101.101

备用:101.102.103.104

IPv6 地址

首选:2001:de4::101

备用:2001:de4::102



# KT olleh

KT olleh DNS

IPv4 地址:

首选:168.126.63.1

备用:168.126.63.2

# SK Broadband

SK Broadband DNS

首选:210.220.163.82

备用:219.250.36.130

# LG U+

LG U+ DNS

两者二选一

首选:164.124.101.2

备用:203.248.252.2


首选:164.124.107.9

备用:203.248.242.2

# 俄罗斯 Yandex Public DNS

俄罗斯 Yandex Public DNS

IPv4 地址

首选:77.88.8.8

备用:77.88.8.1

IPv6 地址

首选:2a02:6b8::feed:0ff

备用:2a02:6b8:0:1::feed:0ff

# 俄罗斯 SafeDNS

俄罗斯 SafeDNS

IPv4 地址

首选:195.46.39.39

备用:195.46.39.40

# 德国 DNS.WATCH Public DNS

德国 DNS.WATCH Public DNS

IPv4 地址

首选:84.200.69.80

备用:84.200.70.40

IPv6 地址

首选:

2001:1608:10:25::1c04:b12f

备用:

2001:1608:10:25::9249:d69b

# 瑞士 xiala.net Public DNS

瑞士 xiala.net Public DNS

IPv4 地址

首选:77.109.148.136

备用:77.109.148.137

IPv6 地址

首选:2001:1620:2078:136::

备用:2001:1620:2078:137::

# 丹麦 UncensoredDNS

丹麦 UncensoredDNS

IPv4 地址

首选:91.239.100.100

备用:89.233.43.71

IPv6 地址

首选:2001:67c:28a4::

备用:2a01:3a0:53:53::

# 荷兰 Freenom World Public DNS

荷兰 Freenom World Public DNS

IPv4地址

首选:80.80.80.80

备用:80.80.81.81



# 北京邮电大学 IPv6 DNS 服务器

TIP

IPv6 地址

首选:2001:da8:202:10::36

备用:2001:da8:202:10::37

# 上海交通大学 IPv6 DNS 服务器

TIP

IPv6 地址

首选:

2001:da8:8000:1:202:120:2:100

备用:

2001:da8:8000:1:202:120:2:101

# 清华大学 TUNA 协会 IPv6 DNS 服务器

TIP

IPv6 地址

首选:2001:da8::666

# 北京科技大学 IPv6 DNS 服务器

TIP

IPv6 地址

首选:2001:da8:208:10::6

# 科技网 IPv6 DNS 服务器

TIP

IPv6 地址

首选:2001:cc0:2fff:2::6

# 雪人计划 Yeti DNS Project

TIP

IPv6 地址

首选:240C::6666

备用:240C::6644

备用:240C::4444

# CNNIC IPv6 DNS 服务器

TIP

IPv6 地址

首选:2001:dc7:1000::1