
\u6700\u8fd1\u642d\u5efa\u4e86\u4e00\u4e2a\u4e2a\u4eba\u7f51\u7ad9\uff0c\u8bb0\u5f55\u4e00\u4e9b\u642d\u5efa NAS \u548c DOCKER \u7684\u4e8b\u60c5\n\u6b63\u597d\u4ece\u963f\u91cc\u4e91\u8585\u4e86\u4e2a 99 \u4e00\u5e74\u7684 ECS \u4e3b\u673a\uff0c\u642d\u914d\u4e4b\u524d\u5728\u817e\u8baf\u4e91\u6ce8\u518c\u7684\u57df\u540d\n\u4e3b\u673a\u4e0a\u4f7f\u7528\u4e86 1panel \u65b9\u4fbf\u7ba1\u7406\uff0c\u7528 docker \u8fd0\u884c\u4e86 halo,\u5e76\u4e14\u4f7f\u7528 1panel \u7533\u8bf7\u4e86*.\u57df\u540d\u7684 ssl \u8bc1\u4e66\u3002
\nhalo \u7684\u7f51\u7edc\u6a21\u5f0f\u662f\u6865\u63a5\u6a21\u5f0f\uff0c\u901a\u8fc7 openresty \u53cd\u5411\u4ee3\u7406\u5230\u5916\u7f51\uff0c\u7136\u540e\u6709 openresty \u63d0\u4f9b ssl \u670d\u52a1\u3002
\n\u4e4b\u540e\u5c31\u9047\u5230\u4e00\u4e2a\u7279\u522b\u8be1\u5f02\u7684\u95ee\u9898\nmac \u3001pc \u7684 chrome \u7cfb\u3001firefox \u6d4f\u89c8\u5668\u8bbf\u95ee\u7f51\u7ad9\u90fd\u6ca1\u95ee\u9898
\n\u4f46\u662f ios \u548c mac \u5e73\u53f0\u7684 safari \u6d4f\u89c8\u5668\u6253\u5f00\u7f51\u7ad9\uff0c\u57fa\u672c\u7b2c\u4e00\u6b21\u90fd\u662f\u63d0\u793a connection was lost,\u5fc5\u987b\u5237\u65b0\u4e2a\u51e0\u6b21\u624d\u80fd\u6253\u5f00\u7f51\u7ad9\uff0c\u4e4b\u540e\u53ea\u8981\u4e0d\u5173\u6389\u6807\u7b7e\u9875\u4e5f\u80fd\u6b63\u5e38\u8bbf\u95ee\u3002\n\u6709\u6ca1\u6709\u670b\u53cb\u9047\u5230\u8fc7\u6b64\u7c7b\u7684\u95ee\u9898?
\n\u7f51\u7ad9\u7f51\u5740\uff1awww.bangzonghao.top
\n", "date_published": "2025-09-08T02:48:28+00:00", "title": "safari \u65e0\u6cd5\u6253\u5f00\u7f51\u7ad9\uff0c\u4f46 chrome \u53ef\u4ee5", "id": "t/1157722" }, { "author": { "url": "member/zhwguest", "name": "zhwguest", "avatar": "https://cdn.v2ex.com/avatar/b633/f688/433522_large.png?m=1685067457" }, "url": "t/1097358", "title": "\u5927\u5bb6\u4e00\u822c\u5982\u4f55\u4fdd\u8bc1\u670d\u52a1\u5668 set-cookie \u6309\u5e8f\u4fdd\u5b58\u7684", "id": "t/1097358", "date_published": "2024-12-13T08:56:23+00:00", "content_html": "\u5047\u8bbe\u670d\u52a1\u5668\u4f1a\u5728\u8bf7\u6c42\u54cd\u5e94\u4e2d\u66f4\u65b0 set cookie \u3002\u5047\u8bbe\u670d\u52a1\u5668 set cookie \u7684\u987a\u5e8f\u5f88\u91cd\u8981\u3002
\n\u5982\u679c\u591a\u4e2a\u8bf7\u6c42\uff0c\u670d\u52a1\u5668\uff08\u5185\u90e8\u4f1a\u4e32\u884c\u5316\uff09\uff0c\u6240\u4ee5\u8bbe\u7f6e\u7684 Cookie \u6709\u65b0\u65e7\u4e4b\u5206\u3002\u65b0 Set \u7684 Cookie \u53ef\u4ee5\u8986\u76d6\u65e7 Cookie \uff0c\u4f46\u7edd\u5bf9\u4e0d\u5141\u8bb8\u65e7 Cookie \u8986\u76d6\u65b0 Cookie \u3002
\n\u4f46\u662f\u5982\u679c\u4e0d\u662f\u4e32\u884c\u5316\u53d1\u51fa\u8bf7\u6c42\uff0c\u90a3\u4e48\u5373\u4f7f\u5148\u53d1\u51fa A \uff0c\u4e5f\u65e0\u6cd5\u4fdd\u8bc1 A \u7684\u54cd\u5e94\uff08\u66f4\u65b0 cookie \uff09\u53d1\u751f\u5728 B \u54cd\u5e94\u4e4b\u524d\u3002\u5c31\u662f\u8bf4\u670d\u52a1\u5668\u8bbe\u7f6e\u7684\u65b0 Cookie \u53ef\u80fd\u88ab\u65e7\u7684\u54cd\u5e94\u8986\u76d6\u3002
\n\u4e00\u822c\u600e\u4e48\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\u5462\uff1f
\n\u4e0d\u77e5\u9053\u6709\u6ca1\u6709\u6bd4\u8f83 Best Practice \u7684\u505a\u6cd5\u3002\u5982\u679c HttpOnly \uff0c\u90a3\u4e48 web \u7aef\u4f3c\u4e4e\u624b\u6bb5\u66f4\u52a0\u6709\u9650\uff1f
\n" }, { "author": { "url": "member/paranoiagu", "name": "paranoiagu", "avatar": "https://cdn.v2ex.com/gravatar/d86363b57ea0d2aeeacee9e9650725b5?s=73&d=retro" }, "url": "t/1062952", "title": "\u660e\u5fa1 WEB \u5e94\u7528\u9632\u706b\u5899 \u5982\u4f55\u627e\u56de\u5bc6\u7801\uff1f", "id": "t/1062952", "date_published": "2024-08-06T07:15:18+00:00", "content_html": "\u660e\u5fa1 WEB \u5e94\u7528\u9632\u706b\u5899\uff0c\u88c5\u5728\u4e00\u4e2a centos \u4e0a\uff0c\u77e5\u9053\u64cd\u4f5c\u7cfb\u7edf\u7684 root \u5bc6\u7801\uff0c\u4f46\u662f\u4e0d\u77e5\u9053 waf \u7684\u7ba1\u7406\u5458\u8d26\u53f7\u5bc6\u7801\u3002\n\u8bf7\u95ee\u5982\u4f55\u627e\u56de\u5bc6\u7801\uff1f\u6216\u8005\u91cd\u8bbe\u5bc6\u7801\uff1f
\n\u53e6\u5916\uff0c\u6709\u4eba\u77e5\u9053\u8fd9 waf \u7684\u6388\u6743\u7ed1\u5b9a\u786c\u4ef6\u5417\uff1f\u73b0\u5728\u9700\u8981\u8fc1\u79fb\u865a\u62df\u673a\uff0c\u8fc1\u79fb\u540e\u9700\u8981\u91cd\u65b0\u6388\u6743\u5417\uff1f
\n" }, { "author": { "url": "member/7inFen", "name": "7inFen", "avatar": "https://cdn.v2ex.com/avatar/5a0d/d007/501434_large.png?m=1702021305" }, "url": "t/1035155", "date_modified": "2024-04-26T14:50:18+00:00", "content_html": "\u4f7f\u7528\u7684 acme \u81ea\u7b7e\u540d\u8bc1\u4e66\uff08 ZeroSSL \uff09
\n\u624b\u52a8\u66f4\u65b0\u8bc1\u4e66\u540e\u95ee\u9898\u4f9d\u7136\u5b58\u5728
\n\u6628\u665a\u51cc\u6668\u6b63\u5e38\u4f7f\u7528\uff0c\u4eca\u65e9\u8d77\u6765\u7a81\u7136\u51fa\u73b0\u8fd9\u4e2a\u95ee\u9898\u4e86
\n\u8bf7\u95ee\u4f1a\u662f\u4ec0\u4e48\u539f\u56e0\u9020\u6210\u7684\uff1f
\n", "date_published": "2024-04-24T02:08:13+00:00", "title": "\u76f4\u8fde\u6a21\u5f0f\u4e0b https \u7f51\u7ad9\u6253\u4e0d\u5f00", "id": "t/1035155" }, { "author": { "url": "member/fenglirookie", "name": "fenglirookie", "avatar": "https://cdn.v2ex.com/gravatar/1d15b5d761612945f51e15c85e50de07?s=73&d=retro" }, "url": "t/1016108", "title": "\u5173\u4e8e\u5728\u5176\u4ed6\u56fd\u5bb6\u8bbf\u95ee\u4e2d\u56fd\u56fd\u5185\u6570\u636e\u51fa\u73b0\u4e25\u91cd\u4e22\u5305\u95ee\u9898", "id": "t/1016108", "date_published": "2024-02-18T01:32:47+00:00", "content_html": "\u6211\u5728\u4e2d\u56fd\u7684\u817e\u8baf\u670d\u52a1\u5668\u4e0a\u6709\u4e00\u4e2a java \u670d\u52a1\uff0c\u7136\u540e\u6211\u5728 vercel \u4e0a\u90e8\u7f72\u4e86\u4e00\u4e2a nodejs \u670d\u52a1\uff0c\u6211\u5728 vercel \u4e0a\u4f7f\u7528 nodejs \u7684 fetch \u8bbf\u95ee\u817e\u8baf\u670d\u52a1\u5668\u4e0a\u7684\u670d\u52a1\u65f6\uff0c\u8fd9\u4e2a\u670d\u52a1\u4e4b\u95f4\u7684\u6570\u636e\u683c\u5f0f\u662f\u6587\u4ef6\u6d41\u6570\u636e\u5c31\u4f1a\u51fa\u73b0\u5f88\u4e25\u91cd\u7684\u4e22\u5305\u95ee\u9898\uff0c\u8fd9\u662f\u4e3a\u4ec0\u4e48 \u6709 V \u53cb\u77e5\u9053\u5417\uff1f
\n" }, { "author": { "url": "member/hahahalololo", "name": "hahahalololo", "avatar": "https://cdn.v2ex.com/avatar/620d/6bb4/456916_large.png?m=1700040149" }, "url": "t/1006225", "date_modified": "2024-01-05T09:05:45+00:00", "content_html": "url='xxxxxxxxxxxxxxx'\n\nyield scrapy.Request(\n url=url,\n cookies=self.cookies,\n headers=self.headers,\n meta={\n 'download_timeout': 60 \n },\n callback=self.save,\n)\n\nrs = requests.get(url, headers=self.headers, cookies=self.cookies, timeout=60)\n\n\u8fd9\u53ef\u80fd\u662f\u4ec0\u4e48\u539f\u56e0\u9020\u6210\u7684\u5462\uff1f\u627e\u4e86\u4e00\u5708\u4e5f\u6ca1\u53d1\u73b0\u539f\u56e0\u3002COOKIES_ENABLED \u8bbe\u7f6e\u6210 True \u7684
\n", "date_published": "2024-01-05T08:47:11+00:00", "title": "\u6c42\u6559\u540c\u6837\u7684 url \u53c2\u6570\u5934\u90e8 cookies\uff0c scrapy \u8bf7\u6c42\u8fd4\u56de\u9a8c\u8bc1\u7801\uff0c requests \u76f4\u63a5\u8bf7\u6c42\u5c31\u6b63\u5e38\uff0c\u4ee3\u7801\u5982\u4e0b", "id": "t/1006225" }, { "author": { "url": "member/chackchackGO", "name": "chackchackGO", "avatar": "https://cdn.v2ex.com/avatar/1bfa/a60b/455835_large.png?m=1665830450" }, "url": "t/1005324", "date_modified": "2024-01-05T01:08:49+00:00", "content_html": "\u4f8b\u5982
\nPOST /jars/upload HTTP/1.1\nHost: localhost:8081\nAccept-Encoding: gzip, deflate\nAccept: */*\nAccept-Language: en\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36\nConnection: close\nContent-Type: multipart/form-data; boundary=----WebKitFormBoundaryoZ8meKnrrso89R6Y\nContent-Length: 187\n\n------WebKitFormBoundaryoZ8meKnrrso89R6Y\nContent-Disposition: form-data; name=\"jarfile\"; filename=\"../../../../../../tmp/success\"\n\nsuccess\n------WebKitFormBoundaryoZ8meKnrrso89R6Y--\n\n\u8fd9\u6837\u4e00\u6bb5 HTTP \u5305\uff0c\u65e0\u8bba\u7528 postman \uff0cpostwoman, curl \u4e4b\u7c7b\u7684\u5de5\u5177\u90fd\u9700\u8981\u81ea\u884c\u4fee\u6539\u8fd9\u4e2a\u5b57\u7b26\u4e32\u4ee5\u7b26\u5408\u4ed6\u4eec\u7684\u4f7f\u7528\u683c\u5f0f\uff0c \u6709\u4e9b\u4e0d\u65b9\u4fbf\u3002
\n", "date_published": "2024-01-02T17:19:45+00:00", "title": "\u4ec0\u4e48\u5de5\u5177\u9002\u5408\u65b9\u4fbf\u7684\u53d1\u9001\u539f\u59cb HTTP \u5305\uff1f", "id": "t/1005324" }, { "author": { "url": "member/HeloV", "name": "HeloV", "avatar": "https://cdn.v2ex.com/avatar/abc7/9c7e/583341_large.png?m=1748191174" }, "url": "t/997146", "title": "\u51b7\u77e5\u8bc6\uff1a.ml \u57df\u540d\u53ef\u4ee5\u6ce8\u518c\u4e86", "id": "t/997146", "date_published": "2023-12-02T12:15:27+00:00", "content_html": "\u6ce8\u518c\u5730\u5740\u5728 point.ml \uff0c\u652f\u4ed8\u65b9\u5f0f\u9009 master card \u4e4b\u540e\uff0c\u53ef\u4ee5\u7528\u94f6\u884c\u5361\u652f\u4ed8\uff08 visa \u5361\u662f\u53ef\u4ee5\u7684\uff09\uff0c9 \u6b27\u4e00\u5e74\u3002
\n\u5f88\u591a\u56db\u4e2a\u5b57\u6bcd\u7684\u57df\u540d\u6ca1\u6709\u6ce8\u518c
\n\u73b0\u5728\u53ef\u4ee5\u627e\u56de\u4e4b\u524d .ml \u7684\u514d\u8d39\u57df\u540d\u4e86\u3002
\n" }, { "author": { "url": "member/GopherDaily", "name": "GopherDaily", "avatar": "https://cdn.v2ex.com/gravatar/89208b8c3493547fe544b2d5142dc131?s=73&d=retro" }, "url": "t/995871", "title": "TLS \u56de\u987e", "id": "t/995871", "date_published": "2023-11-28T03:10:29+00:00", "content_html": "Secure Sockets Layer(SSL) \u662f\u7f51\u666f(Netscape) \u5728 1995 \u5e74\u63d0\u51fa\u7684\u4e00\u79cd\u5b89\u5168\u52a0\u5bc6\u534f\u8bae, \u5305\u62ec 1.0, 2.0 \u548c 3.0 \u4e09\u4e2a\u7248\u672c.
\nTransport Layer Security(TLS) \u662f\u7531 IETF \u4e3b\u5bfc\u7684, \u5bf9 SSL \u7684\u66f4\u65b0.\nTLS \u7684\u521d\u59cb\u7248\u672c\u548c SSL 3.0 \u57fa\u672c\u76f8\u540c.\nTLS 1.2/1.3 \u662f\u5f53\u524d\u7684\u4e3b\u6d41\u7248\u672c, 1.3 \u76f8\u5bf9 1.2 \u5728\u5b89\u5168\u548c\u6027\u80fd\u4e0a\u90fd\u6709\u660e\u663e\u7684\u63d0\u9ad8.
\n\u6570\u636e\u7ecf\u8fc7\u52a0\u5bc6\u540e(Encrypt), \u4ec5\u62e5\u6709\u5bf9\u5e94\u5bc6\u94a5\u7684\u4eba, \u7ecf\u8fc7\u89e3\u5bc6\u540e\u53ef\u4ee5\u770b\u5230\u6570\u636e\u7684\u5185\u5bb9.\n\u5bc6\u94a5\u7684\u5f62\u5f0f\u5206\u4e3a\u5bf9\u79f0\u5bc6\u94a5\u548c\u975e\u5bf9\u79f0\u5bc6\u94a5, \u975e\u5bf9\u79f0\u5bc6\u94a5\u4e0b, \u5e38\u7531\u7b2c\u4e09\u65b9\u7528\u516c\u94a5\u5bf9\u6570\u636e\u8fdb\u884c\u52a0\u5bc6, \u968f\u540e\u4ec5\u79c1\u94a5\u7684\u6301\u6709\u8005\u53ef\u4ee5\u89e3\u5bc6\u5bf9\u5e94\u6570\u636e.
\n\u6458\u8981(Digest)\u662f\u6307\u5c06\u4e0d\u5b9a\u957f\u7684\u6570\u636e\u6620\u5c04\u5230\u56fa\u5b9a\u957f\u5ea6, \u5982 MD5 \u5c31\u4f1a\u4ea7\u751f 128 \u6bd4\u7279\u7684\u5b57\u7b26\u4e32.\n\u6570\u636e\u53d1\u5e03\u8005\u4e3b\u52a8\u516c\u5e03\u6458\u8981\u540e, \u6570\u636e\u4f7f\u7528\u8005\u53ef\u4ee5\u6309\u76f8\u540c\u89c4\u5219\u8ba1\u7b97\u6570\u636e\u7684\u6458\u8981, \u901a\u8fc7\u6bd4\u5bf9, \u6821\u9a8c\u6570\u636e\u7684\u5b8c\u6574\u6027, \u907f\u514d\u4f7f\u7528\u7684\u6570\u636e\u88ab\u7be1\u6539.
\n\u7b7e\u540d(Sign)\u662f\u6307\u4f7f\u7528\u975e\u5bf9\u79f0\u5bc6\u94a5\u4e2d\u7684\u79c1\u94a5\u8ba1\u7b97\u6570\u636e\u5bf9\u5e94\u7b7e\u540d, \u4f7f\u7528\u8005\u53ef\u4ee5\u4f7f\u7528\u5bf9\u5e94\u516c\u94a5\u9a8c\u8bc1\u6570\u636e\u548c\u7b7e\u540d\u7684\u5173\u8054\u6027,\n\u8fdb\u800c\u786e\u4fdd\u6570\u636e\u662f\u7531\u516c\u94a5\u5bf9\u5e94\u65b9\u53d1\u5e03\u6216\u8ba4\u8bc1\u7684.
\n\u57fa\u4e8e RSA \u4ea4\u6362\u5bc6\u94a5\u7684 TLS \u63e1\u624b\u6d41\u7a0b\u5982\u4e0b, \u5e38\u89c1\u4e8e TLS 1.2:
\n\u5ba2\u6237\u7aef\u786e\u8ba4\u670d\u52a1\u7aef\u8eab\u4efd\u4f9d\u8d56\u4e8e Certificate Authority (CA), \u5373\u8bc1\u4e66\u9881\u53d1\u673a\u6784.\n\u5176\u5de5\u4f5c\u673a\u5236\u53ef\u4ee5\u7b80\u5355\u7684\u7406\u89e3\u4e3a:
\n\u57fa\u4e8e RSA \u7684\u5bc6\u94a5\u4ea4\u6362\u4e2d, \u7531\u5ba2\u6237\u7aef\u751f\u6210 pre-master secret \u540e, \u4f7f\u7528\u670d\u52a1\u7aef\u7684\u516c\u94a5\u52a0\u5bc6\u540e\u4f20\u8f93\u7ed9\u670d\u52a1\u7aef.\n\u7406\u8bba\u4e0a, \u4ec5\u670d\u52a1\u7aef\u4f7f\u7528\u4e25\u5bc6\u4fdd\u62a4\u7684\u79c1\u94a5\u53ef\u4ee5\u89e3\u5bc6\u8fd9\u90e8\u5206\u6570\u636e\u83b7\u53d6\u5230 pre-master secret.\n\u968f\u540e, \u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u7528 pre-master secret, \u5ba2\u6237\u7aef\u968f\u673a\u6570\u548c\u670d\u52a1\u7aef\u968f\u673a\u6570\u751f\u6210\u76f8\u540c\u7684\u5bc6\u94a5, \u7528\u4e8e\u540e\u7eed\u6570\u636e\u7684\u5bf9\u79f0\u52a0\u89e3\u5bc6.
\nTLS 1.3 \u76f8\u8f83\u4e8e TLS 1.2 \u5728\u5b89\u5168\u6027\u548c\u63e1\u624b\u6548\u7387\u4e0a\u90fd\u8981\u8f83\u5927\u7684\u63d0\u9ad8, \u5177\u4f53\u53ef\u4ee5\u53c2\u8003 \u4e3a\u4ec0\u4e48\u8981\u4f7f\u7528 TLS 1.3 \uff1f.
\nServer Name Indication (SNI) \u662f TLS \u7684\u4e00\u4e2a\u6269\u5c55, \u5141\u8bb8\u5ba2\u6237\u7aef\u5728 ClientHello \u4e2d\u6307\u5b9a\u60f3\u8981\u8fde\u63a5\u7684\u4e3b\u673a\u540d.\nSNI \u4e3b\u8981\u7528\u4e8e\u540c\u4e00 IP \u7684\u670d\u52a1\u5668\u627f\u8f7d\u591a\u4e2a\u4e3b\u673a\u540d\u7684\u573a\u666f.
\n\u8bf8\u5982 Istio \u8fd9\u6837\u7684 Mesh \u65b9\u6848, \u4f1a\u5927\u91cf\u4f7f\u7528 SNI \u6765\u505a\u8def\u7531.
\nSource: https://github.com/j2gg0s/j2gg0s/blob/main/_posts/2023-11-27-TLS%20%E5%9B%9E%E9%A1%BE.md
\n" }, { "author": { "url": "member/MrdotX", "name": "MrdotX", "avatar": "https://cdn.v2ex.com/avatar/4b06/8e4a/269951_large.png?m=1516270917" }, "url": "t/990658", "date_modified": "2023-11-10T09:43:30+00:00", "content_html": "\u5982\u9898\uff0c\u901a\u8fc7\u7528\u81ea\u5df1\u7684\u8d26\u53f7\uff0c\u8bf7\u6c42\u67d0\u4e00\u822a\u73ed\u7684\u4f59\u7968\u540e\u628a http \u8bf7\u6c42\u5168\u90e8\u514b\u9686\uff0c\u7136\u540e\u7528\u811a\u672c\u6bcf\u9694\u51e0\u79d2\u53d1\u9001\u8bf7\u6c42\u76d1\u63a7\u4f59\u7968\u60c5\u51b5\uff0c\u4f46\uff0c\u53d1\u73b0\u8be5\u8bf7\u6c42\u6bcf\u9694\u534a\u5c0f\u65f6\u5c31\u5931\u6548\u4e86\uff0c\u7136\u540e\u7528\u81ea\u5df1\u7684\u624b\u673a\u91cd\u65b0\u53d1\u8bf7\u6c42\u83b7\u53d6\u5230\u65b0\u7684 Cookie \u585e\u5230\u811a\u672c\u7684\u8bf7\u6c42\u4e2d\uff0c\u53c8\u53ef\u4ee5\u518d\u6b21\u8fdb\u884c\u5237\u7968\u76d1\u63a7\u3002
\n\u6240\u4ee5\uff0c\u60f3\u8bf7\u95ee\u4e0b\u5728\u5ea7\u7684\u5de8\u4f6c\uff0c\u76ee\u524d\u7684\u534a\u5c0f\u65f6\u662f Cookie \u5f15\u8d77\u7684\u5417\uff1f \u6211\u4e0d\u592a\u61c2 Cookie \u7684\u89c4\u5219\uff0c\u6709\u6ca1\u6709\u65b9\u6cd5\u53ef\u4ee5\u5ef6\u65f6\u8be5\u8bf7\u6c42\uff1f \u80fd\u8d85\u8d8a\u534a\u5c0f\u65f6\u7684\u9650\u5236\uff1f
\n", "date_published": "2023-11-10T05:49:18+00:00", "title": "\u60f3\u76d1\u6d4b\u67d0\u822a\u7a7a\u4f59\u7968", "id": "t/990658" }, { "author": { "url": "member/zkwang", "name": "zkwang", "avatar": "https://cdn.v2ex.com/gravatar/26bdeaa1c2bcaf3bc53000dee4913090?s=73&d=retro" }, "url": "t/982662", "date_modified": "2023-10-17T04:13:14+00:00", "content_html": "\u6709\u4e00\u4e2a\u53e4\u8001\u7684 http-proxy \u8f6f\u4ef6\uff0c\u4e0d\u652f\u6301 connect \u65b9\u6cd5\uff0c\u6240\u4ee5\u53ea\u80fd\u8bbf\u95ee http \u7f51\u7ad9\uff0c\u4e0d\u80fd\u8bbf\u95ee https \u7f51\u7ad9\u3002\n\u6709\u6ca1\u6709\u4ec0\u4e48\u529e\u6cd5\u8ba9\u5b83\u80fd\u8bbf\u95ee https \u7684\u7f51\u7ad9\uff1f
\n", "date_published": "2023-10-17T02:30:10+00:00", "title": "http \u4ee3\u7406\uff0c\u5982\u679c\u4e0d\u652f\u6301 connect \u65b9\u6cd5\uff0c\u6709\u6ca1\u6709\u529e\u6cd5\u8bbf\u95ee https \u7684\u7f51\u7ad9\uff1f", "id": "t/982662" }, { "author": { "url": "member/loveaeen", "name": "loveaeen", "avatar": "https://cdn.v2ex.com/gravatar/8c933b57c6300b49cd0d95808e9465fc?s=73&d=retro" }, "url": "t/981062", "date_modified": "2023-10-11T09:58:13+00:00", "content_html": "\u9879\u76ee\u8fd0\u884c\u73af\u5883
\n\u4eca\u5929\u91c7\u7528 gmssl \u7b7e\u53d1\u4e86\u4e00\u4e2a\u6d4b\u8bd5\u8bc1\u4e66 sm2/rsa \u53cc https \u8bc1\u4e66\u3002\n\u7136\u540e\u4e3a tomcat8 \u4e0e jdk1.8 \u5206\u522b\u589e\u52a0\u4e86\u56fd\u5bc6\u89e3\u6790\u7684 jar \u5305\u3002
\n\u9879\u76ee\u5728 http \u4e0b\u6b63\u5e38\u8fd0\u884c\uff0c\u4f46\u662f https \u65f6\u51fa\u73b0\u8bbf\u95ee\u9759\u6001\u6587\u4ef6\u65f6\u5374\u51fa\u73b0\u4e86 500 \u9519\u8bef\uff0ctomcat \u62a5\u9519 SSLPeerUnverifiedException: peer not authenticated\u3002
\u8be1\u5f02\u7684\u662f\u5374\u6709\u4e00\u5c0f\u90e8\u5206\u9759\u6001\u6587\u4ef6\u8bbf\u95ee\u6b63\u5e38\uff08\u5df2\u5173\u95ed\u6d4f\u89c8\u5668\u7f13\u5b58\uff09
\n\u6709\u54ea\u4f4d\u5927\u5144\u5f1f\u6709\u505a\u8fc7\u8fd9\u65b9\u9762\u7684\u5de5\u4f5c\u5417\uff0c\u6c42\u52a9\uff01
\n", "date_published": "2023-10-11T09:56:29+00:00", "title": "\u5173\u4e8e tomcat \u914d\u7f6e\u56fd\u5bc6 https \u540e\u51fa\u73b0\u7684\u95ee\u9898\u6c42\u52a9", "id": "t/981062" }, { "author": { "url": "member/bfjm", "name": "bfjm", "avatar": "https://cdn.v2ex.com/avatar/6967/3b59/414737_large.png?m=1664094503" }, "url": "t/980807", "date_modified": "2023-10-11T00:35:47+00:00", "content_html": "\u5ba2\u6237\u7aef\u7684\u7ed1\u5b9a\u4e86\u7aef\u53e3 5000 \uff0c\u5411\u670d\u52a1\u7aef\u7684\u7aef\u53e3 4433 \u53d1\u9001\u4e86\u6d88\u606f\uff0c\u670d\u52a1\u7aef\u7ed1\u5b9a\u5e76\u5411\u5ba2\u6237\u7aef connect \uff0c\u6536\u53d1\u6d88\u606f\u6b63\u5e38\uff0c\u4f46\u662f\u5ba2\u6237\u7aef\u5173\u95ed\u539f\u6765\u7684 fd \uff0c\u91cd\u65b0\u7ed1\u5b9a\u4e86\u65b0\u7684\u7aef\u53e3 6000 \uff0c\u7ed9\u670d\u52a1\u7aef\u53d1\u9001\u6d88\u606f\uff0c\u670d\u52a1\u7aef\u8fd8\u80fd\u4ece\u539f\u6765\u7684 fd \u4e0a\u8bfb\u53d6\u6d88\u606f\uff0c \u4e3a\u5565\u4e0d\u662f\u5f53\u6210\u4e00\u4e2a\u65b0\u7684\u5ba2\u6237\u7aef\u5462\uff1f \u4ece\u6293\u5305\u6765\u770b\uff0c\u5ba2\u6237\u7aef\u53d1\u9001\u7684 udp \u5305\u5df2\u7ecf\u662f\u91cd\u65b0\u7ed1\u5b9a\u7684 \u7aef\u53e3 6000", "date_published": "2023-10-10T15:55:07+00:00", "title": "\u4e00\u4e2a udp \u7684\u7591\u95ee", "id": "t/980807" }, { "author": { "url": "member/ccclo", "name": "ccclo", "avatar": "https://cdn.v2ex.com/gravatar/7fdf5c8b0558e27383d934f93ff66869?s=73&d=retro" }, "url": "t/978448", "date_modified": "2023-10-01T07:00:57+00:00", "content_html": "tradingview \u4e0a\u9762\u7b56\u7565\u7684\u4e70\u5165 \u5356\u51fa\u4fe1\u53f7\u600e\u6837\u53d1\u9001\u7ed9\u670d\u52a1\u5668\uff0c\u73b0\u5728 webhook URL \u73b0\u5728\u6536\u8d39 \u6709\u4ec0\u4e48\u529e\u6cd5\u53ef\u4ee5\u89e3\u51b3\u7684", "date_published": "2023-10-01T06:57:55+00:00", "title": "tradingview \u4e0a\u9762\u7b56\u7565\u7684\u4e70\u5165 \u5356\u51fa\u4fe1\u53f7\u600e\u6837\u53d1\u9001\u7ed9\u670d\u52a1\u5668\uff0c\u73b0\u5728 webhook URL \u73b0\u5728\u6536\u8d39 \u6709\u4ec0\u4e48\u529e\u6cd5\u53ef\u4ee5\u89e3\u51b3\u7684", "id": "t/978448" }, { "author": { "url": "member/n2l", "name": "n2l", "avatar": "https://cdn.v2ex.com/avatar/fc64/6dae/253420_large.png?m=1773899890" }, "url": "t/978172", "date_modified": "2023-09-29T14:00:36+00:00", "content_html": "\u5728\u9009\u62e9\u91cd\u4f20\u534f\u8bae\u4e2d\uff0c\u5982\u679c\u53d1\u9001\u63a5\u6536\u7a97\u53e3\u7684\u5c3a\u5bf8\u90fd\u662f 4 \uff0c\u53d1\u9001\u65b9\u53d1\u9001\u7684 0-3 \u53f7\u6570\u636e\u90fd\u88ab\u63a5\u6536\u65b9\u6b63\u786e\u63a5\u53d7\uff0c\u63a5\u6536\u65b9\u4e5f\u53d1\u9001\u4e86 0-3 \u53f7\u786e\u8ba4\u5206\u7ec4\uff0c\u4f46\u662f 2 \u53f7\u786e\u8ba4\u5206\u7ec4\u5728\u4f20\u8f93\u8fc7\u7a0b\u4e2d\u4e22\u5931\u4e86\uff0c\u53ea\u6709 0 \uff0c1 \uff0c3 \u53f7\u786e\u8ba4\u5206\u7ec4\u6b63\u786e\u88ab\u53d1\u9001\u65b9\u6536\u5230\uff0c\u90a3\u540e\u7eed\u7684\u8fc7\u7a0b\u662f\u600e\u6837\u7684\uff1f\uff08\u4e0d\u8981 chatgpt \u7684\u7b54\u6848\uff0c\u56e0\u4e3a\u6211\u8bd5\u8fc7\uff0c\u5f15\u7533\u7684\u7591\u95ee\u6765\u81ea\u4e8e https://b23.tv/fRUMaRO \u7684 6 \u5206\u949f\u5de6\u53f3\uff0c\u89c6\u9891\u91cc\u8bf4\u7684\u662f 2 \u53f7\u6570\u636e\u5206\u7ec4\u4e22\u5931\uff0c\u6211\u7684\u5f15\u7533\u95ee\u9898\u80cc\u666f\u662f 2 \u53f7\u786e\u8ba4\u5206\u7ec4\u4e22\u5931\uff09
\n", "date_published": "2023-09-29T09:59:35+00:00", "title": "\u9009\u62e9\u91cd\u4f20\u534f\u8bae\u7591\u95ee", "id": "t/978172" }, { "author": { "url": "member/isbase", "name": "isbase", "avatar": "https://cdn.v2ex.com/avatar/d1f2/b9b4/64727_large.png?m=1777624776" }, "url": "t/978154", "date_modified": "2023-09-29T07:29:17+00:00", "content_html": "\u7528\u6cd5\u7c7b\u4f3c curl https://example.com
\u5b83\u53ef\u4ee5\u8f93\u51fa\u8bf7\u6c42\u5230\u54cd\u5e94\u5404\u9636\u6bb5\u7684\u8017\u65f6\uff0c\u5305\u62ec DNS \u89e3\u6790\u3001TLS \u63e1\u624b\u3001\u7b49\u4fe1\u606f
\n", "date_published": "2023-09-29T07:23:37+00:00", "title": "\u6709\u4e2a\u7528\u4e8e\u6d4b\u8bd5 HTTPS \u94fe\u63a5\u5404\u9636\u6bb5\u8017\u65f6\u7684\u547d\u4ee4\u884c\u5de5\u5177\u60f3\u4e0d\u8d77\u6765\u53eb\u5565\u4e86", "id": "t/978154" }, { "author": { "url": "member/qweruiop", "name": "qweruiop", "avatar": "https://cdn.v2ex.com/avatar/d6c7/d64e/634178_large.png?m=1704960981" }, "url": "t/978079", "date_modified": "2023-09-29T06:46:34+00:00", "content_html": "\u4e0d\u77e5\u4e0d\u89c9 postman \u91cc\u9762\u5df2\u7ecf\u79ef\u7d2f\u4e86 2000 \u591a\u4e2a requests \u4e86\u3002\u3002\u3002\u73b0\u5728\u5728 m1 \u4e0b\u9762\u5de8\u5361\u3002\u3002\u3002\u611f\u89c9 electron \u7684\u9505\u3002\u3002\u3002
\n\u56e0\u4e3a\u505a\u4f01\u4e1a\u5f00\u53d1\uff0c\u4e0d\u77e5\u9053\u6709\u6ca1\u6709\u7528\u539f\u751f\u5199\u7684\u3002\u3002\u3002\u8981\u6c42\uff1a
\n1 \uff0c\u6700\u597d\u662f\u5f00\u6e90\u7684\u3002\n2 \uff0c\u4e0d\u8981\u56fd\u4eba\u5f00\u53d1\u7684\u3002\u3002\u3002\uff08\u516c\u53f8\u89c4\u5b9a\uff09
\n\u4e0d\u77e5\u9053\u5404\u4f4d\u5c0f\u4f19\u4f34\u90fd\u5728\u7528\u5565\u3002\u3002\u3002
\n", "date_published": "2023-09-28T16:25:09+00:00", "title": "\u6c42\u5404\u4f4d\u9ad8\u624b\u63a8\u8350\u4e00\u4e2a postman \u7684 mac \u4e0b\u7684\u66ff\u4ee3\u3002\u3002", "id": "t/978079" }, { "author": { "url": "member/KingFong", "name": "KingFong", "avatar": "https://cdn.v2ex.com/avatar/436f/c6a8/113024_large.png?m=1763548785" }, "url": "t/976340", "date_modified": "2023-09-22T14:17:08+00:00", "content_html": "\u8feb\u4e8e\u516c\u53f8\u4e1a\u52a1\u6709\u51e0\u5341\u53f0\u8fd0\u884c\u540c\u6837\u7a0b\u5e8f\u7684\u670d\u52a1\u5668\u5728\u7ba1\u7406\uff0c\u8fd9\u4e9b\u670d\u52a1\u5668\u4e0a\u652f\u6301\u901a\u8fc7 http \u63a5\u53e3\u8c03\u7528\u6267\u884c\u4e00\u4e9b\u547d\u4ee4\u3002
\n\u60f3\u627e\u4e00\u4e2a\u5f00\u6e90\u7684\u5de5\u5177\u6765\u5b9e\u73b0\u8fd9\u6837\u7684\u7ba1\u7406\uff0c\u53ef\u4ee5\u6dfb\u52a0\u673a\u5668\u7684 IP \uff0c\u53ef\u4ee5\u7f16\u8f91 http \u8bf7\u6c42\u7ec4\uff0c\u7136\u540e\u53d1\u8d77\u4efb\u52a1\u6279\u91cf\u5f80\u8fd9\u4e9b IP \u4e0a\u53d1\u9001 http \u8bf7\u6c42\uff0c\u5e76\u8bb0\u5f55\u7ed3\u679c\u6216\u8005\u91cd\u8bd5\u3002
\n\u603b\u611f\u89c9\u5e94\u8be5\u6709\u73b0\u6210\u7684\u8f6e\u5b50\u80fd\u5b9e\u73b0\u3002
\n", "date_published": "2023-09-22T14:15:48+00:00", "title": "\u6709\u73b0\u6210\u7684 Http \u8bf7\u6c42\u6279\u91cf\u53d1\u9001\u548c\u7ba1\u7406\u5de5\u5177\u5417\uff1f", "id": "t/976340" }, { "author": { "url": "member/SeduceQAQ", "name": "SeduceQAQ", "avatar": "https://cdn.v2ex.com/avatar/c314/7a5d/604701_large.png?m=1739436837" }, "url": "t/937369", "title": "\u62a5\u6587\u4e3b\u4f53\u548c\u5b9e\u4f53\u4e3b\u4f53\u7684\u5dee\u5f02", "id": "t/937369", "date_published": "2023-05-04T13:36:23+00:00", "content_html": "\u6709\u6ca1\u6709\u5927\u54e5\u80fd\u7528\u901a\u4fd7\u6613\u61c2\u7684\u8bdd\u8be6\u7ec6\u89e3\u91ca\u4e0b\uff0c\u5b9e\u5728\u7406\u89e3\u4e0d\u4e86\uff0c\u6700\u597d\u80fd\u4e3e\u4e2a\u4f8b\u5b50\u8bf4\u660e\u4e00\u4e0b\uff0c\u8c22\u8c22\n
\u4e0d\u662f\u7528 wireshark \u76f4\u63a5\u6293\u53d6\u7684\u65b9\u6cd5
\n" }, { "author": { "url": "member/kakatesla", "name": "kakatesla", "avatar": "https://cdn.v2ex.com/avatar/62fa/5365/603008_large.png?m=1670404170" }, "url": "t/898958", "title": "\u540e 911S5 \u65f6\u4ee3 \u5404\u8def ip \u4ee3\u7406\u7684\u5bf9\u6bd4\u4e0e\u9009\u62e9 (\u4ec5\u4f9b\u53c2\u8003)", "id": "t/898958", "date_published": "2022-11-30T01:13:47+00:00", "content_html": "\u2160 Maxproxy\n\u4ee3\u7406\u4ea7\u54c1\u7c7b\u578b\uff1a\u52a8\u6001\u4ee5\u53ca\u56fa\u5b9a\u4f4f\u5b85 IP\n\u4ee3\u7406\u7f51\u7edc\u6c60\uff1a\u6c60\u4e2d\u6709 5000 \u4e07\u4e2a IP\n\u8ba4\u8bc1\u65b9\u5f0f\uff1a\u7528\u6237\u5bc6\u7801\n\u5730\u7406\u4f4d\u7f6e\u5b9a\u4f4d\uff1a\u57ce\u5e02 /\u56fd\u5bb6\uff08\u5168\u7403 200 \u4e2a\u56fd\u5bb6\uff09\n\u4ee3\u7406\u534f\u8bae\uff1aHTTP \uff08 S \uff09+ Socks5\nMaxProxy \u4e5f\u662f\u4e16\u754c\u4e0a\u6700\u5927\u7684\u5546\u4e1a\u4f4f\u5b85\u4ee3\u7406\u670d\u52a1\u4e4b\u4e00\u3002\u8d85\u8fc7 5000 \u4e07\u65b0\u9c9c\u4f4f\u5b85 IP \uff0c\u652f\u6301\u8fd0\u8425\u5546\u548c\u57ce\u5e02\u7ea7\u7075\u6d3b\u5b9a\u4f4d\uff0c\u8f7b\u677e\u96c6\u6210\u7b2c\u4e09\u65b9\u8f6f\u4ef6\u548c\u811a\u672c
\n\u4e13\u7528\u4ee3\u7406\u670d\u52a1\u5668\u63d0\u4f9b\u7684\u4e13\u7528 SOCKS5 \u4ee3\u7406\uff0c\u5feb\u901f\u7a33\u5b9a\uff0c\u5b9a\u671f\u66f4\u65b0\u3002 \u5927\u591a\u6570\u4ee3\u7406\u7684\u5ef6\u8fdf\u7ea6\u4e3a 10 \u6beb\u79d2\uff0c\u5339\u914d\u4e13\u7528\u4f4f\u5b85 IP \uff0c\u8fd9\u70b9\u6211\u5728\u4f7f\u7528\u8fc7\u7a0b\u4e2d\u786e\u5b9e\u611f\u89c9\u5230\u5f88\u597d\u7528
\n\u7ed3\u5408 SOCKS5 \u4ee3\u7406\u7684\u9ad8\u533f\u540d\u6027\uff0c\u4fdd\u62a4\u7528\u6237\u9690\u79c1\u548c\u5b89\u5168\uff0c\u8f7b\u677e\u5b9e\u73b0\u56fd\u9645\u7f51\u901f\u52a0\u901f\u3002
\n\u5ba2\u670d\u65b9\u9762\uff0c\u652f\u6301\u65e5\u4ed8\u3001\u6708\u4ed8\uff0cMaxProxy \u7684\u4e13\u4e1a\u56e2\u961f\u63d0\u4f9b\u53ca\u65f6\u7684\u6280\u672f\u652f\u6301\uff0c\u8054\u7cfb\u5f88\u65b9\u4fbf \u652f\u6301\u591a\u79cd\u8054\u7cfb\u65b9\u5f0f\u3002
\nMaxProxy \u7684\u4f18\u70b9\uff1a\nIP \u5730\u5740\u7684\u5927\u91cf\u5206\u914d\n\u826f\u597d\u7684\u5e38\u89c1\u95ee\u9898\u89e3\u7b54\u652f\u6301\u9875\u9762\n\u5b89\u5168\u53ef\u9760\n\u5ec9\u4ef7\u4ee3\u7406\n\u6613\u4e8e\u8bbe\u7f6e\nMaxProxy \u7684\u7f3a\u70b9\uff1a\n\u6682\u65f6\u6ca1\u6709\u514d\u8d39\u8bd5\u7528
\n\u2161 YourPrivateProxy\n\u4f4f\u5b85 IP \u5de5\u4f5c\u4f5c\u4e3a\u4e13\u7528\u4ee3\u7406\n\u4ee3\u7406\u4ea7\u54c1\u7c7b\u578b\uff1a\u9759\u6001\u4f4f\u5b85 IP\n\u9a8c\u8bc1\u65b9\u5f0f\uff1a\u7528\u6237\u5bc6\u7801+ IP \u9a8c\u8bc1\n\u5730\u7406\u4f4d\u7f6e\u5b9a\u4f4d\uff1a\u5f15\u7528\n\u4ee3\u7406\u534f\u8bae\uff1aHTTP \uff08 S \uff09\nYourPrivateProxy \u662f\u5e02\u573a\u4e0a\u9876\u7ea7\u7684\u4f4f\u5b85\u4ee3\u7406\u63d0\u4f9b\u5546\u4e4b\u4e00\u3002\u4f7f\u7528 YourPrivateProxy \uff0c\u60a8\u53ef\u4ee5\u533f\u540d\u6d4f\u89c8 Internet \u5e76\u6267\u884c\u8bf8\u5982\u793e\u4ea4\u5e10\u6237\u7ba1\u7406\u548c\u8fd0\u52a8\u978b\u7ad9\u70b9\u4e4b\u7c7b\u7684\u4efb\u52a1\u3002
\n\u5b83\u4eec\u53ea\u6709 2 \u4e2a\u7528\u4e8e\u9759\u6001\u4f4f\u5b85 IP \u4ee3\u7406\u7684\u670d\u52a1\u5668\u4f4d\u7f6e\uff0c\u60a8\u53ef\u4ee5\u9009\u62e9\u8981\u4f7f\u7528\u7684\u4e00\u4e2a\u3002\u4ed6\u4eec\u7684\u9759\u6001\u4f4f\u5b85 IP \u4ee3\u7406\u6765\u81ea\u7f8e\u56fd 2 \u4e2a\u57ce\u5e02\uff0c\u5f17\u5409\u5c3c\u4e9a\u5dde\u963f\u4ec0\u672c\u548c\u4f0a\u5229\u8bfa\u4f0a\u5dde\u829d\u52a0\u54e5\u3002
\n\u5728\u901f\u5ea6\u65b9\u9762\uff0c\u5b83\u4eec\u4e5f\u975e\u5e38\u5feb\u901f\u3002\u5173\u4e8e\u5b89\u5168\u6027\uff0c\u8bf7\u653e\u5fc3\uff0cYourPrivateProxy \u5f88\u53ef\u9760\u3002
\n\u5b83\u4eec\u7684\u4ef7\u683c\u76f8\u5f53\u4fbf\u5b9c\uff0c\u60a8\u53ef\u4ee5\u9009\u62e9\u514d\u8d39\u8bd5\u7528\u3002\u4f46\u662f\uff0c\u4ed6\u4eec\u7684\u9000\u6b3e\u653f\u7b56\u4ec5\u5141\u8bb8\u57fa\u4e8e\u6280\u672f\u800c\u975e\u517c\u5bb9\u6027\u7684\u9000\u6b3e\u3002\u5ef6\u8fdf\u4e5f\u662f YourPrivateProxy \u7684\u6700\u53d7\u6279\u8bc4\u7684\u7279\u6027\u4e4b\u4e00\u3002
\nYourPrivateProxy \u7684\u4f18\u70b9\uff1a\n\u4f18\u60e0\u7684\u4ef7\u683c\n\u9009\u62e9\u5730\u70b9\u7684\u80fd\u529b\n\u9ad8\u901f\u4e0a\u7f51\n\u514d\u8d39\u8bd5\u7528\nYourPrivateProxy \u7684\u7f3a\u70b9\uff1a\n\u5ef6\u8fdf\u4e0d\u591f\u597d\n\u9000\u6b3e\u653f\u7b56\u4ec5\u57fa\u4e8e\u6280\u672f\u6027
\n\u2162 Proxyrack\n\u9002\u7528 \u4e8e\u7f51\u7edc\u6293\u53d6\u7684\u5c0f\u578b\u9879\u76ee\n\u4ee3\u7406\u8981\u7ea6\u7c7b\u578b\uff1a\u65cb\u8f6c\u4f4f\u5b85 IP\n\u4ee3\u7406\u7f51\u7edc\u6c60\uff1a\u6c60\u4e2d\u6709 480 \u4e07\u4e2a IP\n\u8ba4\u8bc1\u65b9\u5f0f\uff1a\u7528\u6237+\u901a\u884c\u8bc1\n\u5730\u7406\u4f4d\u7f6e\u5b9a\u4f4d\uff1a\u4e0d\u652f\u6301\uff08\u7f8e\u56fd\u6216\u5168\u7403\u6df7\u5408\uff09\n\u4ee3\u7406\u534f\u8bae\uff1aHTTP \uff08 S \uff09+ Socks5\nProxyrack \u662f\u9876\u7ea7\u7684\u4f4f\u5b85\u4ee3\u7406\u63d0\u4f9b\u5546\u4e4b\u4e00\u3002\u4ed6\u4eec\u5728\u793e\u4ea4\u5a92\u4f53\u4ee3\u7406\u63d0\u4f9b\u65b9\u9762\u4e3a\u81ea\u5df1\u521b\u9020\u4e86\u4e00\u4e2a\u5229\u57fa\u5e02\u573a\u3002\u4ed6\u4eec\u6709 Skype \uff0cWhatsapp \uff0cFacebook \uff0cInstagram \uff0cGmail \uff0cPok\u00e9monGo \uff0cTelegram \u548c Viper \u7684\u4ee3\u7406\u3002
\n\u9664\u4e86\u63d0\u4f9b\u4f4f\u5b85\u4ee3\u7406\u670d\u52a1\u5916\uff0c\u5b83\u4eec\u8fd8\u63d0\u4f9b\u6570\u636e\u4e2d\u5fc3\u4ee3\u7406\u670d\u52a1\uff0c\u53ef\u4ee5\u8bf4\u662f\u5e02\u573a\u4e0a\u6700\u4fbf\u5b9c\u7684\u670d\u52a1\u4e4b\u4e00\u3002\u5373\u4f7f\u4ed6\u4eec\u4e0d\u63d0\u4f9b\u514d\u8d39\u8bd5\u7528\uff0c\u4e5f\u6709\u9ad8\u8fbe 14 \u5929\u7684\u9000\u6b3e\u653f\u7b56\uff0c\u8fd9\u662f\u4ed6\u4eec\u4fe1\u4efb\u6240\u63d0\u4f9b\u670d\u52a1\u7684\u6807\u5fd7\u3002\u9664\u4ee3\u7406\u670d\u52a1\u5668\u5916\uff0cProxyrack \u8fd8\u8fdb\u5165 VPN \u5e02\u573a\uff0c\u4ed6\u4eec\u62e5\u6709\u81ea\u5df1\u7684\u5e02\u573a\u4efd\u989d\u3002
\n\u5728\u7f8e\u56fd\u548c\u52a0\u62ff\u5927\uff0c\u4e9a\u6d32\u548c\u5927\u6d0b\u6d32\u4ee5\u53ca\u6b27\u6d32\uff0c\u4ed6\u4eec\u7684\u4ee3\u7406\u4eba\u8d85\u8fc7 1,250,000 \u3002\u4ed6\u4eec\u83b7\u5f97\u4e86\u826f\u597d\u7684\u5ba2\u6237\u652f\u6301\u670d\u52a1\uff0c\u5e76\u4e14\u5e26\u5bbd\u6570\u91cf\u6ca1\u6709\u9650\u5236\u3002
\nProxyrack \u7684\u4f18\u70b9\uff1a\n\u793e\u4ea4\u5a92\u4f53\u81ea\u52a8\u5316\u7684\u5b8c\u7f8e\u9009\u62e9\n\u826f\u597d\u7684\u5ba2\u6237\u670d\u52a1\n14 \u5929\u9000\u6b3e\u653f\u7b56\n\u65e0\u9650\u5e26\u5bbd\nProxyrack \u7684\u7f3a\u70b9\uff1a\n\u6ca1\u6709\u514d\u8d39\u8bd5\u7528\n\u5730\u7406\u4f4d\u7f6e\u5b9a\u4f4d\u529f\u80fd\u5dee
\n\u2163 Proxy-cheap\n\u6ca1\u6709\u6bcf\u6708\u7684\u8d27\u5e01\u627f\u8bfa
\n\u4ee3\u7406\u8981\u7ea6\u7c7b\u578b\uff1a\u65cb\u8f6c\u4f4f\u5b85 IP\n\u4ee3\u7406\u7f51\u7edc\u6c60\uff1a\u6c60\u4e2d\u6709 6+\u767e\u4e07\u4e2a IP\n\u8ba4\u8bc1\u65b9\u5f0f\uff1a\u7528\u6237+\u901a\u884c\u8bc1\n\u5730\u7406\u4f4d\u7f6e\u5b9a\u4f4d\uff1a\u56fd\u5bb6\uff08\u652f\u6301 127 \u4e2a\uff09\n\u4ee3\u7406\u534f\u8bae\uff1aHTTP \uff08 S \uff09+ Socks5\nProxy-cheap \u63d0\u4f9b\u4e86\u4e00\u4e9b\u5e02\u573a\u4e0a\u6700\u4fbf\u5b9c\u7684\u4f4f\u5b85\u4ee3\u7406\uff0c\u4e14\u5728\u5168\u7403\u62e5\u6709\u8d85\u8fc7 600 \u4e07\u4e2a\u4f4f\u5b85 IP \uff0c\u652f\u6301\u7ea6 127 \u4e2a\u56fd\u5bb6\u3002Proxy-cheap \u5177\u6709\u4f1a\u8bdd\u4ee3\u7406\uff0c\u8fd9\u4e9b\u4ee3\u7406\u5c06\u5728\u66f4\u6539\u4e4b\u524d\u7684\u4e00\u6bb5\u65f6\u95f4\u5185\u4fdd\u6301\u76f8\u540c\u7684 IP \uff08\u548c\u4f1a\u8bdd\uff09\u3002\u5982\u679c\u60a8\u6b63\u5728\u5bfb\u627e\u53ef\u4ee5\u5728\u6bcf\u6b21\u8bf7\u6c42\u540e\u66f4\u6539 IP \u7684\u9ad8\u65cb\u8f6c\u4ee3\u7406\uff0c\u4e5f\u53ef\u4ee5\u4ece Proxy-cheap \u4e2d\u83b7\u53d6\u5b83\u4eec\u3002
\nProxy-cheap \u58f0\u79f0\u63d0\u4f9b\u4e86\u6700\u4f73\u7684\u6027\u4ef7\u6bd4\u3002\u800c\u4e14\uff0c\u5982\u679c\u60a8\u67e5\u770b\u5b83\u7684\u4ef7\u683c\uff0c\u60a8\u4f1a\u5728\u67d0\u79cd\u7a0b\u5ea6\u4e0a\u540c\u610f\u8fd9\u4e00\u70b9\uff0c\u56e0\u4e3a\u5b83\u7684\u4ee3\u7406\u5f88\u4fbf\u5b9c\uff0c\u4e14\u6ca1\u6709\u6bcf\u6708\u6700\u4f4e\u6d88\u8d39\u627f\u8bfa\u3002\u60a8\u53ef\u4ee5\u8d2d\u4e70\u4f4e\u81f3 1 GB \u7684\u5e26\u5bbd\uff0c\u4e14\u5f53\u60a8\u8d2d\u4e70\u66f4\u591a\u5e26\u5bbd\u65f6\uff0c\u6bcf GB \u7684\u4ef7\u683c\u53ef\u4ee5\u964d\u81f3 3 \u7f8e\u5143\u3002
\nProxy-cheap \u7684\u4f18\u70b9\uff1a\n\u975e\u5e38\u4fbf\u5b9c\n\u826f\u597d\u7684\u5730\u7406\u4f4d\u7f6e\u8986\u76d6\n\u6ca1\u6709\u6700\u4f4e\u6bcf\u6708\u627f\u8bfa\n\u76f8\u5f53\u5927\u7684\u6e38\u6cf3\u6c60\nProxy-cheap \u7684\u7f3a\u70b9\uff1a\n\u4e0d\u63d0\u4f9b\u9000\u6b3e\n\u4e0d\u592a\u597d\u7684\u5ba2\u6237\u652f\u6301\n\u4ec5\u652f\u6301\u56fd\u5bb6 /\u5730\u533a\u7ea7\u5730\u7406\u4f4d\u7f6e\u5b9a\u4f4d
\n" }, { "author": { "url": "member/wencan", "name": "wencan", "avatar": "https://cdn.v2ex.com/avatar/0690/9014/5813_large.png?m=1747997681" }, "url": "t/896893", "date_modified": "2022-11-21T12:30:58+00:00", "content_html": "HEAD \u8bf7\u6c42\uff0c\u7528\u5f97\u8f83\u5c11\u3002tcp \u8fde\u63a5\u548ctcp \u6570\u636e\u5305\u7684\u533a\u522b
\n" }, { "author": { "url": "member/eluotao", "name": "eluotao", "avatar": "https://cdn.v2ex.com/avatar/501b/5d85/268860_large.png?m=1773458155" }, "url": "t/895086", "title": "httpCanary \u7684\u4e0a\u4f20\u670d\u52a1\u5668\u63d2\u4ef6\uff0c\u8fd9\u4e2a\u5e94\u8be5\u5982\u4f55\u914d\u7f6e\uff1f", "id": "t/895086", "date_published": "2022-11-14T04:46:43+00:00", "content_html": "httpCanary \u7684\u4e0a\u4f20\u670d\u52a1\u5668\u63d2\u4ef6\uff0c\u8fd9\u4e2a\u5e94\u8be5\u5982\u4f55\u914d\u7f6e\uff1f\u5728\u8bbf\u95ee\u4e00\u4e2a\u5185\u90e8\u7f51\u7ad9\u65f6\u5019\uff0c\u53ea\u6709\u90e8\u5206\u7684\u64cd\u4f5c\uff0c\u5982\u6700\u540e\u7684\u63d0\u4ea4\u64cd\u4f5c\u540e\uff0c\u9700\u8981\u9009\u62e9\u8bc1\u4e66\uff0c\u8fd9\u662f\u4ec0\u4e48\u539f\u7406\u3002
\nhttps \u7684\u53cc\u5411\u8ba4\u8bc1\u5e94\u8be5\u662f\u6253\u5f00\u6240\u6709\u9875\u9762\u624d\u9700\u8981\uff0c\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u662f\u4e0d\u662f\u6807\u51c6\u7684 https \u53cc\u5411\u8ba4\u8bc1\u3002
\n" }, { "author": { "url": "member/erquiasz0825", "name": "erquiasz0825", "avatar": "https://cdn.v2ex.com/gravatar/3f44839b14e4ab05f22a8f70274ce7cf?s=73&d=retro" }, "url": "t/871056", "date_modified": "2022-08-06T03:46:17+00:00", "content_html": "\u6bd4\u5982\u8bbf\u95ee v2ex.com \uff0c\u77ed\u65f6\u95f4\u5185\u6253\u5f00\u591a\u4e2a\u94fe\u63a5\uff0c\u7406\u8bba\u4e0a\u90fd\u662f\u590d\u7528\u4e00\u4e2a tcp \u8fde\u63a5\uff0c\u5b83\u7684\u5b58\u7eed\u671f\u662f\u591a\u4e45\uff0c\u4ee5\u4e0b\u8bf4\u6cd5\u5bf9\u5417\uff1f
\nI am getting frustrated by the number of people calling any HTTP-based interface a REST API. Today\u2019s example is the SocialSite REST API. That is RPC. It screams RPC. There is so much coupling on display that it should be given an X rating.
\nWhat needs to be done to make the REST architectural style clear on the notion that hypertext is a constraint? In other words, if the engine of application state (and hence the API) is not being driven by hypertext, then it cannot be RESTful and cannot be a REST API. Period. Is there some broken manual somewhere that needs to be fixed?
\n--Roy Fielding, Creator of the term REST
\nREST APIs must be hypertext-driven
\nhttps://htmx.org/essays/how-did-rest-come-to-mean-the-opposite-of-rest/
\n" }, { "author": { "url": "member/CatCode", "name": "CatCode", "avatar": "https://cdn.v2ex.com/gravatar/7dfa8c7d43ca8f5bb37248a2009fa040?s=73&d=retro" }, "url": "t/849826", "title": "2022 \u5e74 TLS 1.3 HTTP/2 \u4e0b\u5230\u5e95\u8be5\u4e0d\u8be5\u5f00\u542f Gzip \u538b\u7f29\uff1f", "id": "t/849826", "date_published": "2022-04-28T07:09:56+00:00", "content_html": "Debian \u7cfb\u53d1\u884c\u7248\u91cc\u7684 nginx \u914d\u7f6e\u6587\u4ef6\u91cc\u6709\u4e00\u884c\u6ce8\u91ca\uff0c\u5927\u6982\u610f\u601d\u8bf4\uff1a\u56e0\u4e3a\u5b89\u5168\u539f\u56e0\uff0c\u5efa\u8bae SSL \u542f\u7528\u65f6\u5173\u95ed Gzip \u3002\n\u641c\u4e86\u4e00\u4e0b\uff0c\u786e\u5b9e\u662f\u6709 CRIME \u548c BREACH \u8fd9\u4e24\u79cd\u653b\u51fb\u65b9\u5f0f\u53ef\u80fd\u9488\u5bf9 HTTPS \u4e0b\u542f\u7528\u538b\u7f29\uff0c\u4f46\u662f\u90fd\u662f\u65e9\u4e9b\u5e74\u7684\u653b\u51fb\u65b9\u5f0f\u4e86\u3002
\n\u6700\u8fd1\u770b NextCloud \u8fd9\u4e2a\u81ea\u5efa\u7f51\u76d8\u7684\u670d\u52a1\uff0c\u91cc\u9762\u7684 js \u6587\u4ef6\u4f53\u79ef\u5de8\u5927\uff0c\u5982\u679c\u4e0d\u542f\u7528\u538b\u7f29\uff0c\u8fdb\u4e2a\u9875\u9762\u52a0\u8f7d\u90fd\u8981\u8f6c\u534a\u5929\u3002\n\u770b\u4e86\u4e00\u4e0b\u5b89\u88c5\u914d\u7f6e\u7684\u6587\u6863\uff0c\u5728 Nginx \u91cc\u5b83\u662f\u9488\u5bf9\u90e8\u5206\u7c7b\u578b\u542f\u7528\u4e86 Gzip \u538b\u7f29\u7684\u3002
\n\u6b64\u5916\uff0cGoogle \u4e5f\u641e\u51fa\u4e86 ngx_brotli \u8fd9\u4e48\u4e2a\u63d2\u4ef6\uff0c\u4e13\u95e8\u6765\u538b\u7f29 HTTP \u5185\u5bb9\u3002
\n\u6b64\u65f6\uff0c\u6211\u60f3\u95ee\u95ee\u5404\u4f4d\uff0c\u5927\u5bb6\u8ba4\u4e3a\u662f\u5426\u5e94\u8be5 /\u662f\u5426\u9700\u8981\u5f00\u542f\u538b\u7f29\u5462\uff1f\u5927\u5bb6\u7684\u670d\u52a1\u5668\u91cc\u5f00\u542f\u4e86\u538b\u7f29\u5417\uff1f
\n" }, { "author": { "url": "member/hkhk366", "name": "hkhk366", "avatar": "https://cdn.v2ex.com/gravatar/9a75aad2405331be9707489b430120b5?s=73&d=retro" }, "url": "t/849335", "title": "\u53ef\u4ee5\u4e0d\u5173\u95ed\u670d\u52a1\u66ff\u6362\u8bc1\u4e66\u5417\uff1f \u8c22\u8c22", "id": "t/849335", "date_published": "2022-04-26T04:46:44+00:00", "content_html": "let's encrypt \u7684\u8bc1\u4e66\u53ea\u6709 3 \u4e2a\u6708\uff0c\u4e5f\u5c31\u662f\u8bf4 3 \u4e2a\u6708\u5c31\u8981\u6362\u4e00\u6b21\u8bc1\u4e66\uff0c\u6211\u770b\u5230\u7684\u7f51\u4e0a\u7684\u6559\u7a0b\u90fd\u662f\u5173\u95ed nginx \u670d\u52a1\u540e\uff0c\u7c98\u8d34\u65b0\u7684\u8bc1\u4e66\u8fdb\u53bb\uff0c\u7136\u540e\u5f00\u542f nginx \u670d\u52a1\uff0c\u8fd9\u6837\u4f1a\u5bfc\u81f4\u670d\u52a1\u4e2d\u65ad\u4e00\u4e0b\uff0c\u8bf7\u95ee\u6709\u4ec0\u4e48\u529e\u6cd5\u53ef\u4ee5\u4e0d\u5173\u95ed\u670d\u52a1\u5c31\u80fd\u66f4\u65b0\u8bc1\u4e66\u5417\uff1f
\n\u8fd8\u6709\u5176\u4ed6 go \u8bed\u8a00\u7684\u6846\u67b6\u6bd4\u5982 echo,gin \u8fd9\u79cd\u6846\u67b6\uff0c\u80fd\u4e0d\u80fd\u4e0d\u5173\u95ed\u670d\u52a1\u4e5f\u80fd\u66f4\u65b0\u8bc1\u4e66\u5417\uff1f\u8c22\u8c22\u5566\u3002
\n" }, { "author": { "url": "member/yezheyu", "name": "yezheyu", "avatar": "https://cdn.v2ex.com/avatar/f338/e452/166159_large.png?m=1698659181" }, "url": "t/821774", "date_modified": "2021-12-13T01:53:54+00:00", "content_html": "\u5728 HTTP2 \u534f\u8bae\u4e2d\uff0c\u6570\u636e\u662f\u4f7f\u7528\u4e8c\u8fdb\u5236\u4f20\u8f93\u3002
\n\u5bf9\u4e8e\u8fd9\u4e2a\u4e8c\u8fdb\u5236\u4f20\u8f93\uff0c\u6211\u4e0d\u592a\u7406\u89e3\u3002
\n\u5047\u8bbe\u6211\u7ed9\u670d\u52a1\u5668\u53d1\u9001\u7684\u662f\u6587\u672c\u6d88\u606f\uff1a\u4f60\u597d
\n\u5728 HTTP1.1 \u4e2d\u4f1a\u5728 head \u4e2d\u6807\u6ce8\u4e0a\uff1acontent-type: text/html; charset=UTF-8
\u7136\u540e body \u4e2d\u628a \"\u4f60\u597d\" \u6309 utf-8 \u7f16\u7801\u8868\u8f6c\u62100x4F60(\u4f60) 0x597D(\u597d)\u5bf9\u5e94\u7684\u4e00\u957f\u4e32\u7684\u4e8c\u8fdb\u5236\u5f62\u5f0f\u4f20\u8f93
\"\u4f60\u597d\" \u5728\u7f51\u7edc\u4e0a\u4f20\u8f93\u5c31\u662f\u4e8c\u8fdb\u5236\u4f20\u8f93\uff0c\u4e3a\u5565\u4e0d\u7b97\u4e8c\u8fdb\u5236\u6d41\uff1f
\n\u662f\u56e0\u4e3a\u4f7f\u7528\u7684\u662f\u6587\u672c\u7f16\u7801\u683c\u5f0f\u5417\uff1f
\n\u90a3\u5728 HTTP2 \u4e2d\u4e0d\u4f7f\u7528\u6587\u672c\u683c\u5f0f\u7f16\u7801\uff0c\u600e\u4e48\u5904\u7406 \"\u4f60\u597d\" \u5462\uff1f
\n\u662f\u65b0\u5236\u5b9a\u4e00\u79cd\u7f16\u7801\u683c\u5f0f\u5417\uff1f
\n\u6bd4\u5982\u6211\u81ea\u5b9a\u4e49\u4e00\u79cd newCoding \u7f16\u7801\uff1a
\n\u4f60 ---> 01
\n\u597d ---> 10
\n\u5728 head \u4e2d\u58f0\u660econtent-type: application/binary; newCoding
\u7136\u540e body \u4e2d\u5c31\u76f4\u63a5\u53d1\u900101 10
\u6211\u53ef\u4ee5\u8fd9\u6837\u7406\u89e3\u5417\uff1f
\n", "date_published": "2021-12-13T01:52:58+00:00", "title": "\u5173\u4e8e HTTP \u4e2d\u7f16\u7801\u4e00\u70b9\u7591\u95ee", "id": "t/821774" }, { "author": { "url": "member/hanssx", "name": "hanssx", "avatar": "https://cdn.v2ex.com/avatar/5912/4ca0/350569_large.png?m=1734523135" }, "url": "t/813303", "title": "http \u4ee3\u7406 vs. https \u4ee3\u7406", "id": "t/813303", "date_published": "2021-11-05T07:39:08+00:00", "content_html": "\u5c0f\u767d\u4eca\u5929\u5728\u5199 python requests proxies \u7684\u65f6\u5019\u53d1\u73b0\uff0c\u8bf7\u6c42 https \u7f51\u7ad9\u4e00\u76f4\u63d0\u793a\u63e1\u624b\u5931\u8d25\uff0c\u90e8\u5206\u4ee3\u7801\u5982\u4e0b
\n requests_proxies = {\n 'http': f\"http://{first_proxy}\",\n 'https': f\"https://{first_proxy}\",\n }\n last_proxy = s.get('https://ifconfig.me', proxies=requests_proxies, timeout=10).text\n\n\uff0c\u540e\u9762\u624d\u53d1\u73b0\u672c\u5730 clash \u5f00\u7684\u662f socks5 \u548c http \u4ee3\u7406\uff0c\u6ca1\u6709 https \u4ee3\u7406\uff0c\u641c\u7d22\u53d1\u73b0\u7f51\u4e0a\u6709\u4eba\u628a https://\u6539\u6210\u4e86 http://\uff0c\u4f7f\u7528 http \u4ee3\u7406\u534f\u8bae\u6765\u8bbf\u95ee https \u7f51\u7ad9\u53ef\u4ee5\u6210\u529f\u3002
\n\u4e8e\u662f\u4e0a\u7f51\u5b66\u4e60\u4e00\u756a\uff0c\u53d1\u73b0\u4e86\u4e0b\u9762\u8fd9\u4e24\u7bc7\u6587\u7ae0\uff1a\uff08\u5176\u4e2d\u7b2c 1 \u7bc7\u6587\u7ae0\u6700\u4e3b\u8981\u7684\u662f\u8bc4\u8bba\u90e8\u5206\uff09
\n\u5176\u4e2d\u7b2c 1 \u7bc7\u6587\u7ae0\u8bc4\u8bba\u4e2d\u6709\u4e00\u6bb5
\ntechon 2017-02-16 11:04:51\n\n\u73b0\u5728\u6765\u8bf4\n\nHTTP \u4ee3\u7406\u53ef\u4ee5\u652f\u6301 SSL \uff0c\u80fd\u591f\u4ee3\u7406 https \u7f51\u7ad9\n\nHTTPS \u4ee3\u7406\u4e00\u822c\u4e5f\u652f\u6301 http\n\n\u524d\u8005\u4e3a\u4ee3\u7406\u534f\u8bae\uff0c\u540e\u8005\u662f\u5e94\u7528\u534f\u8bae\uff0c\u4e0d\u53ef\u6df7\u540c\u4e00\u8c08\n\n\u597d\u50cf\u89e3\u91ca\u4e86 http \u4ee3\u7406\u534f\u8bae\u53ef\u4ee5\u7528\u6765\u8bbf\u95ee https \u7ad9\u70b9\uff0c\u90a3\u4e48\u5bf9\u5e94\u7b2c 2 \u7bc7\u6587\u7ae0\u4e2d\u7684\u5e94\u8be5\u5c31\u662f\u6700\u540e\u9762\u7684\u56fe\n
\u4ed8\u8d39 30 \u7ea2\u5305\u9001\u7ed9\u7b2c\u4e00\u4f4d\u5e2e\u52a9\u89e3\u51b3\u6b64\u95ee\u9898\u7684 V \u53cb\uff0c\u4ee5\u804a\u8868\u5fc3\u610f\u3002
\n\u7269\u7406\u673a Windows 10
\nC:\\Windows\\system32>curl -V\ncurl 7.55.1 (Windows) libcurl/7.55.1 WinSSL\nRelease-Date: [unreleased]\nProtocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp\nFeatures: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL\n\n\u865a\u62df\u673a Linux Mint 19.3 \uff0c\u7b49\u4ef7 Ubuntu 18.04 LTS
\n# mint @ mint-virtual-machine in ~ [11:38:30] \n$ curl -V\ncurl 7.58.0 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.1.1 zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.30.0 librtmp/2.3\nRelease-Date: 2018-01-24\nProtocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp \nFeatures: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL \n\n\n\u5728\u865a\u62df\u673a\u4e2d\uff0c\u524d\u51e0\u5929\u4e0b\u5348\u7528 pycharm \u7684\u65f6\u5019\u7a81\u7136\u5f39\u51fa\u4e2a\u516c\u53f8\u7684\u8bc1\u4e66\uff0c\u4e0d\u77e5\u9053\u4e3a\u5565\uff0c\u5c31\u6b63\u5e38\u5199\u4ee3\u7801\u4e2d\u3002\n
\u540e\u9762\u5c1d\u8bd5\u53d1\u73b0\u6240\u6709 https \u7ad9\u70b9\u8fde\u63a5\u90fd\u6709\u95ee\u9898\uff0c\u6bd4\u5982\u4e0b\u56fe\u4e2d\u7684\u67d0\u5ea6\uff0c\n
\u6309\u7167 curl \u95ee\u9898\u6307\u5f15 https://curl.se/docs/sslcerts.html \uff0c\u4e0b\u8f7d cacert.pem \uff0c\u8fd0\u884c\u4f9d\u7136\u6ca1\u6709\u6548\u679c\n
\u540c\u65f6\u7269\u7406\u673a\u4e0a\u9762\u7684 windows curl \u4e5f\u4e0d\u597d\u4f7f\u4e86\n
\u5ffd\u7565\u6389\u8bc1\u4e66\u662f\u53ef\u4ee5\u7684\uff0c\u6bd4\u5982curl -v https://www.baidu.com --insecure\n\u4f46\u662f\u8fd9\u5e76\u4e0d\u662f\u89e3\u51b3\u65b9\u6848\u554a\uff0c\u53e6\u5916\u5176\u4ed6\u4f7f\u7528 HTTPS \u7684\u5de5\u5177\u597d\u50cf\u4e5f\u8fde\u4e0d\u4e0a HTTPS \u7ad9\u70b9\u4e86\uff0c\u50cf\u662f\u7cfb\u7edf\u95ee\u9898\uff1f\u4f46\u662f\u5b9e\u5728\u60f3\u4e0d\u660e\u767d\u7269\u7406\u673a\u548c\u865a\u62df\u673a\u540c\u65f6\u4e0d\u80fd\u8bf7\u6c42 HTTPS \u7684\u539f\u56e0\u662f\u5565\u3002
\u6211\u6709\u767e\u5ea6\u627e\u65b9\u6cd5,\u4f46\u6d4f\u89c8\u5668\u8f93\u5165 Javascript:alert(document.lastModified)\u67e5\u8be2\u7f51\u9875\u65f6\u95f4\u7684\u8fd9\u4e2a\u65b9\u5f0f\u662f\u8fc7\u65f6\u4e86\u5417?\n\u56e0\u4e3a\u4e00\u5806\u7f51\u7ad9\u5237\u65b0\u540e\u65f6\u95f4\u90fd\u4f1a\u53d8\u52a8,\u96be\u9053\u4e00\u5806\u7f51\u7ad9\u90fd\u7528\u4f2a\u9759\u6001\u7f51\u5740\u5417?\n\u7136\u540e\u67e5\u767e\u5ea6\u9996\u9875\u5237\u65b0\u540e\u4e5f\u662f\u4e00\u76f4\u53d8\u65f6\u95f4,\u6709\u5176\u5b83\u65b9\u6cd5\u53ef\u4ee5\u68c0\u6d4b\u4f2a\u9759\u6001\u8fd8\u7eaf\u9759\u6001\u7f51\u5740\u5417?\u6216\u662f\u6709\u7ebf\u4e0a\u5de5\u5177\u4e4b\u7c7b\u7684
\n", "date_published": "2021-09-28T08:26:38+00:00", "title": "\u5982\u4f55\u5206\u8fa8\u7f51\u7ad9\u662f\u4f2a\u9759\u6001\u8fd8\u7eaf\u9759\u6001\u7f51\u5740?", "id": "t/804921" }, { "author": { "url": "member/aqtata", "name": "aqtata", "avatar": "https://cdn.v2ex.com/avatar/be60/9f31/171110_large.png?m=1764074284" }, "url": "t/799376", "date_modified": "2021-09-02T01:35:06+00:00", "content_html": "\u5927\u5bb6\u90fd\u77e5\u9053\u53c2\u6570\u662f\u952e\u503c\u5bf9\u7684\u5f62\u5f0f
\n/?key=value
\u6211\u60f3\u95ee\u7684\u662f\u89c4\u8303\u4e2d\u6709\u6ca1\u6709\u5bf9\u8fd9\u79cd\u683c\u5f0f\u505a\u51fa\u89e3\u91ca\uff1f
\n/?xxx
\u8fd9\u4e2axxx\u662f\u5f53\u4f5c key \u5904\u7406\u4e86\u8fd8\u662f\u5f53\u4f5c value \u5904\u7406\uff1f\u8fd8\u662f\u7531\u670d\u52a1\u5668\u5b9e\u73b0\u51b3\u5b9a\uff1f
\u80cc\u666f\uff1a\u6846\u67b6 struts2\uff0c\u57fa\u4e8e servlet \u5b9e\u73b0\u4e86\u4e00\u4e2a\u63a5\u53e3\u3002
\n\u95ee\u9898\uff1a\u5ba2\u6237\u7aef\u4ece\u5916\u90e8\u53d1\u6765\u4e00\u6b21 http post \u8bf7\u6c42\u3002\u5982\u679c\u5ba2\u6237\u7aef\u7684 socketTimeout \u65f6\u95f4\uff08\u6bd4\u5982 10s \uff09\u5c0f\u4e8e\u670d\u52a1\u5668\u5904\u7406\u8fd9\u6b21\u8bf7\u6c42\u4e1a\u52a1\u6570\u636e\u7684\u65f6\u95f4\uff08\u6bd4\u5982\u4ece\u6536\u5230\u8bf7\u6c42\u5efa\u7acb\u8fde\u63a5\u8981 30s \u624d\u80fd\u8fd4\u56de\u7ed3\u679c\u7ed9\u5ba2\u6237\u7aef\uff09\uff0c\u90a3\u8fd9\u65f6\u5019\u5ba2\u6237\u7aef\u5df2\u7ecf timeout \u5173\u95ed\u4e86\u6b64\u6b21\u8fde\u63a5\u4e86\uff0c\u670d\u52a1\u7aef\u80fd\u5426\u611f\u77e5\u5230\u6216\u8005\u8bf4\u68c0\u6d4b\u5230\u8fd4\u56de\u6570\u636e\u65f6\u5ba2\u6237\u7aef\u5df2\u7ecf\u5173\u95ed\u7684\u72b6\u6001\uff1f
\n\u83dc\u9e1f\u63d0\u95ee\uff0c\u5404\u4f4d\u5927\u4f6c\u591a\u591a\u5305\u6db5\u54c8\u54c8\u3002
\n" }, { "author": { "url": "member/MonTubasa", "name": "MonTubasa", "avatar": "https://cdn.v2ex.com/avatar/05b1/b172/523685_large.png?m=1776044374" }, "url": "t/798191", "title": "\u5c45\u7136 http \u8fd8\u6709 418 \u8fd9\u4e48\u4e2a\u72b6\u6001\u7801", "id": "t/798191", "date_published": "2021-08-26T09:47:40+00:00", "content_html": "\u4eca\u5929\u5728\u770b http \u534f\u8bae\u7684\u65f6\u5019\uff0c\u5ffd\u7136\u7784\u5230\u4e00\u4e2a 418 \u72b6\u6001\u7801
\n\n\n418 I'm a teapot\n\u670d\u52a1\u5668\u62d2\u7edd\u5c1d\u8bd5\u7528 \u201c\u8336\u58f6\u51b2\u6ce1\u5496\u5561\u201d\u3002
\n
wtf?\u8fd9\u73a9\u610f\u5728 developer.mozilla.org \u8fd9\u4e2a\u7f51\u7ad9\u4e0a\u663e\u793a\u662f\u6240\u6709\u6d4f\u89c8\u5668\u517c\u5bb9\uff0c\u5b9e\u9645\u4e0a\u6d4b\u4e86\u4e00\u4e0b\uff0c\u5c31\u6ca1\u6709\u54ea\u4e2a\u6d4f\u89c8\u5668\u517c\u5bb9\u7684\u3002\n\u8fd9\u73a9\u610f\u771f\u9707\u64bc\u6211\u4e00\u5e74\uff0c\n\u67e5\u4e86\u4e00\u67e5\uff0c\u5c45\u7136\u8fd8\u6709\u4e2a [save418]https://save418.com \u8fd9\u4e48\u4e2a\u7f51\u7ad9\u3002\n\u4e00\u65f6\u4e0d\u77e5\u9053\u8bf4\u4ec0\u4e48\u597d\u3002\n\u8bdd\u8bf4\u5404\u4f4d\u6709\u6ca1\u6709\u8c01\u77e5\u9053\u54ea\u4e2a\u6d4f\u89c8\u5668\u73b0\u5728\u652f\u6301\u8fd9\u4e2a\u72b6\u6001\u7801\u7684\uff1f\u6211\u60f3\u6253\u5f00\u770b\u770b\u3002
\n" }, { "author": { "url": "member/LeeReamond", "name": "LeeReamond", "avatar": "https://cdn.v2ex.com/avatar/f481/5f03/469082_large.png?m=1713801588" }, "url": "t/796988", "date_modified": "2021-08-20T04:35:58+00:00", "content_html": "\u6628\u5929\u7528 http2 \u4f20\u4e86\u5927\u6982 300G \u7684\u56fe\u7247\u6570\u636e\uff0c\u591a\u7ebf\u7a0b\u8dd1\u4e86 24 \u5c0f\u65f6\u5de6\u53f3\uff0c\u8868\u73b0\u4ee4\u4eba\u610f\u5916\u5730\u60ca\u559c\uff0c\u5168\u7a0b\u65e0\u65ad\u8fde\uff0c\u6570\u636e\u7684 md5 \u4e5f\u5168\u90e8\u6821\u9a8c\u901a\u8fc7\u3002
\n\u4e0d\u592a\u6e05\u695a\u8fd9\u91cc\u9762\u6709\u591a\u5c11\u662f\u7531\u4e8e http2 \u7684\u7279\u6027\u4fdd\u8bc1\u7684\uff0c\u4f46\u6709\u70b9\u52a8\u5fc3\u60f3\u628a\u670d\u52a1\u8fc1\u79fb\u5230 http2 \u3002\u60f3\u95ee\u4e00\u4e0b\u5982\u679c\u60f3\u4f7f\u7528 http2 \u8fd9\u4e9b\u6bd4\u5982\u8fde\u63a5\u590d\u7528\u4e4b\u7c7b\u7684\u7279\u6027\uff0c\u5728\u670d\u52a1\u7aef\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u662f\u6709\u611f\u77e5\u7684\u5417\uff1f\u8fd8\u662f\u8bf4\u628a\u6302\u8f7d\u670d\u52a1\u7684 nginx \u8c03\u5230\u652f\u6301 http2 \u5c31 ok \u4e86\uff0c\u5269\u4e0b\u7684\u6d4f\u89c8\u5668\u4f1a\u81ea\u52a8\u5b8c\u6210\uff1f
\n", "date_published": "2021-08-20T04:30:27+00:00", "title": "\u5207\u6362\u5230 http2 \u5bf9\u5f00\u53d1\u4eba\u5458\u662f\u6709\u611f\u77e5\u7684\u5417\uff1f", "id": "t/796988" }, { "author": { "url": "member/v2clay", "name": "v2clay", "avatar": "https://cdn.v2ex.com/gravatar/ddb6722578ccb307d0b663e89f44506a?s=73&d=retro" }, "url": "t/792531", "title": "\u5173\u4e8e quic \u7b2c\u4e00\u6b21\u8fde\u63a5 \u9700\u8981 tcp\uff08http2\uff09\u652f\u6301\u7684\u56f0\u60d1", "id": "t/792531", "date_published": "2021-07-29T10:49:33+00:00", "content_html": "\u5728 chrome \u8bbf\u5ba2\u6a21\u5f0f\u4e0b\uff0c\u6216\u8005\u6e05\u9664\u7f13\u5b58\uff0c\u8bbf\u95ee\u652f\u6301 quic \u7684\u7ad9\u70b9\uff0c\u5982 www.v2ex.com/cdn-cgi/trace \u3002\u6d4b\u8bd5\u4e2d\u53d1\u73b0\u6211\u60f3\u6293\u70b9\u513f\u6570\u636e\uff0c\u5730\u5740\u662f https://www.uukanshu.com/b/151226/
\n\u7136\u800c\u6d4f\u89c8\u5668\u548c postman \u8bbf\u95ee\u6ca1\u95ee\u9898\uff0c200
\n\u7528 curl \u5c31\u4e0d\u884c\u4e86\uff0c\u8fd4\u56de\u4e00\u4e2a 302 \u8df3\u8f6c 404 \u7684\u9875\u9762\u3002
\n\u6211\u7279\u610f\u67e5\u770b\u4e86 postman \u7684 header
\u4f7f\u7528 curl \u52a0\u4e0a postman \u7684 header \u6267\u884c\u4e00\u4e0b
curl -H \"User-Agent:PostmanRuntime/7.28.2;Accept:*/*;Host:www.uukanshu.com;Accept-Encoding:gzip, deflate, br;Connection:keep-alive;Cookie:ASP.NET_SessiOnId=tbugww5w3cqigikqsg2ezvm5; fcip=111\" https://www.uukanshu.com/b/151226/\n\n\u5f97\u5230\u5982\u4e0b\u7684\u8fd4\u56de
\n<html><head><title>Object moved</title></head><body>\n<h2>Object moved to <a href=\"/404.htm\">here</a>.</h2>\n</body></html>\n\n\u60f3\u8bf7\u6559\u4e00\u4e0b\u5982\u4f55\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\u5462\uff0c\u76ee\u6807\u7f51\u7ad9\u6ca1\u770b\u61c2\u662f\u5982\u4f55\u505a\u7684\u6821\u9a8c,\u8c22\u8c22
\n", "date_published": "2021-07-15T03:28:14+00:00", "title": "Postman 200 \u7136\u800c curl 302", "id": "t/789661" }, { "author": { "url": "member/dongcheng", "name": "dongcheng", "avatar": "https://cdn.v2ex.com/avatar/3882/4fc9/61071_large.png?m=1398432070" }, "url": "t/789116", "title": "\u600e\u4e48\u7528 httpcanary \u5728\u5b89\u5353 7 \u6293\u5c0f\u7a0b\u5e8f\u7684\u5305\uff1f", "id": "t/789116", "date_published": "2021-07-12T13:11:59+00:00", "content_html": "\u6dfb\u52a0\u4e86\u8bc1\u4e66\uff0c\u8fd8\u662f\u6293\u4e0d\u5230 HTTPS \u7684\u5305\u3002\u5728\u5b89\u5353 6 \u7528 fiddler \u6293\u5305\u5f88\u6b63\u5e38\u3002\u5b89\u5353 7 \u600e\u4e48\u641e\uff1f\u6211\u5728\u5c40\u57df\u7f51\u5185\u642d\u5efa\u4e86\u4e00\u4e2a Frigate \uff08 object detection)\u670d\u52a1\uff0c\u7528\u6765\u505a\u4e00\u4e9b\u5bb6\u5ead\u81ea\u52a8\u5316\u3002Frigate \u63d0\u4f9b\u4e86\u4e00\u4e2a web \u63a5\u53e3\uff0c\u76d1\u542c\u5728 10.0.0.200:5000 \u4e0a\u3002\u4e3a\u4e86\u5728\u5916\u8bbf\u95ee\uff0c\u6211\u628a\u8def\u7531\u5668\u5f00\u653e\u4e86\u4e00\u4e2a\u7aef\u53e3\u8f6c\u53d1\u3002\u4f46\u662f Frigate \u672c\u8eab\u65e2\u4e0d\u63d0\u4f9b https\uff0c\u4e5f\u4e0d\u63d0\u4f9b\u9274\u6743\uff0c\u56e0\u6b64\u6211\u9700\u8981\u914d\u7f6e\u4e00\u4e9b\u5b89\u5168\u63aa\u65bd\u3002
\n\u6211\u53ef\u4ee5\u53e6\u5916\u642d\u5efa\u4e00\u4e2a nginx \u4f5c\u4e3a https \u53cd\u5411\u4ee3\u7406\uff0c\u4f46\u662f\u9274\u6743\u7684\u8bdd\u73b0\u5728\u53ea\u80fd\u60f3\u5230 https basic authenticate \u3002\u8bf7\u95ee\u6709\u6ca1\u6709\u66f4\u5b89\u5168\u3001\u7b80\u5355\u7684\u505a\u6cd5\u5462\uff1f
\n", "date_published": "2021-07-10T21:41:13+00:00", "title": "\u5982\u4f55\u5b89\u5168\u5730\u5c06\u5c40\u57df\u7f51\u5185\u7684 http \u670d\u52a1\u66b4\u9732\u5728\u516c\u7f51\uff1f", "id": "t/788791" }, { "author": { "url": "member/keyword233", "name": "keyword233", "avatar": "https://cdn.v2ex.com/avatar/eb8c/3332/440233_large.png?m=1624294482" }, "url": "t/779690", "date_modified": "2021-06-06T14:29:39+00:00", "content_html": "\u5728 HTTP \u96a7\u9053\u4ee3\u7406\u4e2d\uff0c\u5ba2\u6237\u7aef\u53ef\u4ee5\u5355\u72ec\u6307\u5b9a\u76ee\u6807\u670d\u52a1\u5668\u7684 ip \u4e48\uff1f\u8fd8\u662f\u53ea\u80fd\u628a host \u4ea4\u7ed9\u4ee3\u7406\u670d\u52a1\u5668\u8ba9\u4ee3\u7406\u670d\u52a1\u5668\u6765\u89e3\u6790\u5bf9\u5e94 ip?
\n\u4ee3\u7406\u670d\u52a1\u5668\u7248\u672c squid/3.5.19
\n", "date_published": "2021-05-27T17:47:47+00:00", "title": "\u5173\u4e8e HTTP \u4ee3\u7406\u7684\u7591\u60d1", "id": "t/779690" }, { "author": { "url": "member/monkeyNik", "name": "monkeyNik", "avatar": "https://cdn.v2ex.com/avatar/d196/0d1a/499929_large.png?m=1697247708" }, "url": "t/779143", "title": "\u5bf9 HTTP3 \u7684\u6027\u80fd\u7591\u60d1", "id": "t/779143", "date_published": "2021-05-25T09:43:31+00:00", "content_html": "\u7406\u8bba\u4e0a HTTP3 \u4f9d\u8d56\u4e8e UDP \u4f20\u8f93\uff0c\u514d\u9664\u4e86 TCP \u7684\u5efa\u8fde\u548c\u65ad\u8fde\u63e1\u624b\uff0c\u6027\u80fd\u5e94\u8be5\u6709\u5f88\u5927\u63d0\u5347\u3002\u4f46\u662f\u672c\u4eba\u4f7f\u7528 h2load \uff08\u652f\u6301 http3 \u7684\u7248\u672c\uff09\u8fdb\u884c\u6d4b\u8bd5\u53d1\u73b0 HTTP1.1 \u7684\u6027\u80fd\u8fdc\u9ad8\u4e8e HTTP3\uff0c\u4e0d\u7ba1\u662f\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u5668\u662f\u5426\u5728\u540c\u4e00\u53f0\u673a\u5668\u4e0a\u3002\u540c\u673a\u4e0a HTTP1.1 \u6bd4 HTTP3 \u7684 QPS \u9ad8\u4e00\u4e2a\u6570\u91cf\u7ea7\uff0c\u8de8\u673a\u7684\u60c5\u51b5\u4e0b HTTP1.1 \u6bd4 HTTP3 \u9ad8 3 \u500d\u5de6\u53f3\u3002
\n\u670d\u52a1\u5668\u4f7f\u7528\u4e86 Nginx \u5b98\u65b9\u7684 Nginx-quic \u7248\u672c\u4ee5\u53ca cloudflare \u7684 Quiche Patch\uff0c\u8fd9\u4e24\u6b3e\u5747\u8fdb\u884c\u4e86\u6d4b\u8bd5\uff0c\u7ed3\u8bba\u90fd\u662f\u4e00\u81f4\u7684\u3002\n\u4e0d\u77e5\u9053\u8bf8\u4f4d v \u53cb\u6709\u6ca1\u6709\u4ec0\u4e48\u597d\u7684\u5efa\u8bae\uff0c\u662f\u5426\u662f\u6211\u914d\u7f6e\u7684\u95ee\u9898\uff08\u4e2a\u4eba\u611f\u89c9\u6ca1\u5565\u8fc7\u591a\u9700\u8981\u914d\u7f6e\u7684\u989d\uff09\uff1f
http \u8bf7\u6c42 stream \u54cd\u5e94\u65f6\uff0cresponse body \u6253\u5370\u51fa\u6765\u662f\u6b63\u786e\u7684\u7ed3\u679c\uff1a
\n\t\t{\"result\":{\"code\":1,\"msg\":\"1111\"}}\n {\"result\":{\"code\":2,\"msg\":\"2222\"}}\n {\"result\":{\"code\":3,\"msg\":\"3333\"}}\n {\"result\":{\"code\":4,\"msg\":\"4444\"}}\n {\"result\":{\"code\":5,\"msg\":\"5555\"}}\n {\"result\":{\"code\":6,\"msg\":\"6666\"}}\n\n\u4f46\u662f\u4f7f\u7528runtime.JSONPb.Decode \u65f6\uff0c\u4e5f\u4f1a\u5f97\u5230\u4e94\u4e2a\u7ed3\u679c\uff0c\u4f46\u6bcf\u4e2a decode \u51fa\u6765\u662f\u4e2a nil... :
=== RUN TestHttpRespStream\n service_test.go:147: resp: <nil>\n service_test.go:147: resp: <nil>\n service_test.go:147: resp: <nil>\n service_test.go:147: resp: <nil>\n service_test.go:147: resp: <nil>\n service_test.go:147: resp: <nil>\n service_test.go:149: EOF\n--- PASS: TestHttpRespStream (0.62s)\n\n\u8fd9\u662f proto \u6587\u4ef6\uff1a
\n// ./pb/test.proto\n\nsyntax = \"proto3\";\n\npackage pb;\n\noption go_package = \"/pb;pb\";\n\nimport \"google/api/annotations.proto\";\n\nmessage Req {\n int32 id = 1;\n string name = 2;\n}\n\nmessage Resp {\n int32 code = 1;\n string msg = 2;\n}\n\nservice TestService {\n rpc QueryStreamResp(Req) returns (stream Resp){\n option (google.api.http) = {\n post: \"/query-stream-resp\"\n body: \"*\"\n };\n };\n rpc QueryStreamReq(stream Req) returns (Resp){\n option (google.api.http) = {\n post: \"/query-stream-req\"\n body: \"*\"\n };\n };\n \n rpc Query(stream Req) returns (stream Resp){\n option (google.api.http) = {\n post: \"/query\"\n body: \"*\"\n };\n };\n}\n\ngrpc \u670d\u52a1\u7aef\uff1a
\nfunc (ts *TestService) QueryStreamResp(req *pb.Req, stream pb.TestService_QueryStreamRespServer) error {\n\tlog.Printf(\"QueryStreamResp|start...|req: %+v\\n\", req)\n\tresult := []*pb.Resp{\n\t\t{Code: 1, Msg: \"1111\"},\n\t\t{Code: 2, Msg: \"2222\"},\n\t\t{Code: 3, Msg: \"3333\"},\n\t\t{Code: 4, Msg: \"4444\"},\n\t\t{Code: 5, Msg: \"5555\"},\n\t\t{Code: 6, Msg: \"6666\"},\n\t}\n\n\t// header := make(metadata.MD)\n\t// header.Append(\"content-type\", \"application/json\")\n\t// stream.SendHeader(header)\n\tfor i := range result {\n\t\tlog.Printf(\"resp: %+v\", result[i])\n\t\t\n\t\tif err := stream.Send(result[i]); err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\ttime.Sleep(100 * time.Millisecond)\n\t}\n\tlog.Println(\"QueryStreamResp|stop...\")\n\n\treturn nil\n}\n\n\n\u5355\u5143\u6d4b\u8bd5\uff1a
\nfunc TestHttpRespStream(t *testing.T) {\n\turl := \"http://127.0.0.1:8080/query-stream-resp\"\n\treqData := &pb.Req{Id: 1, Name: \"111\"}\n\n\tvar buffer bytes.Buffer\n\tencoder := (&runtime.JSONPb{}).NewEncoder(&buffer)\n\n\tif err := encoder.Encode(reqData); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tctx, cancel := context.WithCancel(context.Background())\n\tdefer cancel()\n\treq, err := http.NewRequestWithContext(ctx, http.MethodPost, url, &buffer)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer resp.Body.Close()\n\t// body, err := ioutil.ReadAll(resp.Body)\n\t// if err != nil {\n\t// \tt.Fatal(err)\n\t// }\n\t// t.Logf(\"body: %s\", string(body))\n\tjsonb := new(runtime.JSONPb)\n\tdencoder := jsonb.NewDecoder(resp.Body)\n\n\tfor {\n\t\tvar result *pb.Resp\n\t\terr := dencoder.Decode(result)\n\t\tif err == nil {\n\t\t\tt.Logf(\"resp: %+v\", result)\n\t\t} else {\n\t\t\tt.Logf(\"%+v\", err)\n\t\t\tbreak\n\t\t}\n\t}\n}\n\n", "date_published": "2021-05-11T11:29:39+00:00", "title": "\u5173\u4e8e http \u5904\u7406 grpc-gateway stream \u6d41\u5f0f\u54cd\u5e94\u65f6\u7684\u95ee\u9898", "id": "t/776316" }, { "author": { "url": "member/angcz", "name": "angcz", "avatar": "https://cdn.v2ex.com/gravatar/da1c2d8fc2127697a27eaec65cfbbaac?s=73&d=retro" }, "url": "t/774653", "date_modified": "2021-05-02T12:04:09+00:00", "content_html": "\u6700\u8fd1\u770b\u4e86\u4e0b https \u53cc\u5411\u8ba4\u8bc1\uff0c\u6709\u4e9b\u70b9\u6ca1\u641e\u61c2\uff0c\u8fd8\u8bf7\u5927\u5bb6\u6307\u6559\u4e00\u4e0b\u3002\u5982\u9898\uff0c\u4e1a\u52a1\u75db\u70b9\uff1a\u6211\u4eec\u7684\u7cfb\u7edf\u6709\u591a\u4e2a\u63a5\u53e3\u9700\u8981\u5411\u7b2c\u4e09\u65b9\u7cfb\u7edf\u8fdb\u884c\u53d1\u9001\u6570\u636e\uff0c\u63a5\u53e3\u4f7f\u7528\u7684\u5927\u90e8\u5206\u662f\u4e24\u65b9\u7cfb\u7edf\u534f\u5546\u7684\u81ea\u5b9a\u4e49\u534f\u8bae\uff0c\u800c\u6211\u4eec\u8fd9\u8fb9\u6bcf\u6b21\u5f00\u53d1\u5b8c\u90fd\u662f\u4e24\u773c\u62b9\u9ed1\u7684\u90e8\u7f72\u4e0a\u53bb\uff0c\u6ca1\u6709\u4e00\u4e2a\u5f88\u597d\u7684\u65b9\u6848\u6d4b\u8bd5\uff1b\u6211\u4eec\u4e5f\u65e0\u6cd5\u4f7f\u7528\u7b2c\u4e09\u65b9\u7cfb\u7edf\u6765\u5bf9\u6211\u4eec\u7684\u63a5\u53e3\u8fdb\u884c\u6d4b\u8bd5\uff1b\u6240\u4ee5\u5e0c\u671b\u80fd\u6709\u4e00\u4e2a\u652f\u6301\u81ea\u5b9a\u4e49\u534f\u8bae\u7684\u6d4b\u8bd5\u7a0b\u5e8f\uff0c\u8bf7\u6559\u5404\u4f4d\u6709\u4ec0\u4e48\u597d\u7684\u5b9e\u73b0\u65b9\u5f0f\u5417\uff1f\u6211\u73b0\u4e0b\u89c9\u5f97\u5e94\u8be5\u505a\u6210 web \u65b9\u5f0f\uff0c\u652f\u6301\u624b\u52a8\u548c\u5b9a\u65f6\u8bf7\u6c42\u3002
\n" } ] } ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86