首页
关于
留言
壁纸
更多
直播
统计
友链
Search
1
好用的软件分享
807 阅读
2
最新Navicat 15 for MySQL破解+教程 正确破解步骤
344 阅读
3
面试常见问题100问
315 阅读
4
MySQL外键约束(FOREIGN KEY)
257 阅读
5
中国式英语
253 阅读
日常记录
后端
PHP
NodeJs
Python
Java
前端
JavaScript
数据库
MySQL
服务器
美文
微信开发
微信公众号
微信小程序
编程
登录
Search
标签搜索
mysql
面试
python
django
express
axios
thinkphp
PHP
励志
哲理
九九乘法表
node
cors
跨域
唯美句子
美文
文件上传
ajax
算法
jwt
公子初心
累计撰写
82
篇文章
累计收到
12
条评论
首页
栏目
日常记录
后端
PHP
NodeJs
Python
Java
前端
JavaScript
数据库
MySQL
服务器
美文
微信开发
微信公众号
微信小程序
编程
页面
关于
留言
壁纸
直播
统计
友链
搜索到
82
篇与
的结果
2023-12-19
04-创建自己的第一个model
1.修改mysql的配置信息 settings.py 编辑DATABASES 默认sqlite3改成修改mysql2.cmd 命令行安装mysqlclient 命令:pip install mysqlclient3.打开blog项目里面的models.py 创建自己的model类 Article为表名 继承models.Model4.完成数据迁移 python manage.py makemigrations app名称(可选 不写默认所有应用)5.继续执行python manage.py migrate 来创建表6.最终会在migrations 里生成0001_initial.py 看到字段结构7.命令python manage.py sqlmigrate blog 0001 查看建表语句8.查看数据表 已经创建成功9.手动写入一条记录,读取,模板中展示
2023年12月19日
107 阅读
0 评论
0 点赞
2023-12-19
03-开发第一个Templates
1.在自己的blog应用中创建templates 目录,在里面创建本应用名称的目录(blog)创建模板文件index.html2.指定可以访问模板的配置在views.py文件内 修改返回值 render() 第一个参数request,第二个参数调用模板路径,第三个参数,字典形式传输数据,模板中直接{{}} 输出
2023年12月19日
45 阅读
0 评论
0 点赞
2023-12-19
02-Django创建第一个项目
第一种方式来访问第一个页面(不常用)1.blog/views.pyfrom django.http import HttpResponse def index(request): return HttpResponse('hello world')2.myblog/urls.pyimport blog.views as bv urlpatterns = [ path('admin/', admin.site.urls), path('index/', bv.index), path('zhang/', bv.zhang), ]3.直接url访问第二种方式来访问第一个页面(常用)1.在blog/views.pyfrom django.http import HttpResponse def index(request): return HttpResponse('你好,世界')2.myblog/urlsfrom django.urls import path,include urlpatterns = [ path('admin/', admin.site.urls), path('blog/', include('blog.urls')), *index主目录* ]3.在blog/里创建urls.pyfrom django.urls import path from . import views urlpatterns = [ path('/index, views.index),*index子目录* ]4.访问127.0.0.1:8000/blog
2023年12月19日
54 阅读
0 评论
0 点赞
2023-12-19
01-python安装Django-创建应用
1.windows 按照djangopip install Django== 2.02.创建项目工程Django-admin命令 Django-admin startproject myblog (项目名称)或者我们可以可以使用pycharm来创建Django项目查看manage.py常用命令 可以 python manage.py 查看如果想要修改端口号 python manage.py 9999 3.创建属于自己的应用python manage.py startapp blog 4.将应用添加添加到 INSTALLED_APPS = ['blog']
2023年12月19日
79 阅读
0 评论
0 点赞
2023-12-19
关于取长补短和扬长避短的一点想法
记得在很早的时候我就对‘扬长避短’和‘取长补短’这两个成语进行过归纳,总结。这与我最近看到的新的观点‘新木桶原理’刚好不谋而合!所谓的木桶原理指的是,一只水桶能装多少水取决于它最短的那块木板 !而新的木桶原理指的是,木桶能盛多少水不在于短板多短,而在于长板多长!只要让木桶大于0度,无限延长长板,则木桶的盛水量就会不断增加!通过两个词语从而引发我对人生的思考。人生在世,每个人都不可能是十全十美的,有劣势就意味着有优势!盲人因为视力的问题,从而听力更加优秀!每个人都有自己的优点和缺点。从小我们接受的教育就是取长补短,见贤思齐焉,见不贤而内自省也!但是,不是所有的地点都可以做到取长补短的!比如说,一个男人,身高和长相是先天的,是我们无法决定的!但是,这并不是阻碍你成功的借口!这个时候,取长补短就嫌得不那么现实了。我们更多应该考虑的是扬长避短的问题!一个人,外在的某些方面也许略显不足,但是,我们可以通过自己的努力,从而增加自己的学识,见识,阅历,谈吐,做到温文尔雅,谦虚大方,成熟稳重,幽默风趣,具有绅士风度!这样的话,即使我们在先天方面,在某些方面有所欠缺,有所不足,但是我们认为对于个人来说影响并不大!只要努力,让自己变得优秀,卓越起来闪光点足够多的时候,某些不足的地方,大家就不会特别在意,就不重要了!所以,要充满正能量,积极向上,用自己的热情和正能量去影响身边的每一个人,拒绝抱怨!每一天都是新的一天,无论怎样,借故堕落或者不努力总是不应该的。毕竟,每过一秒我们就老一秒,现在的我就是最年轻的我!
2023年12月19日
65 阅读
0 评论
0 点赞
2023-12-18
htaccess如何配置隐藏index.php
1.Apache服务器htaccess如何配置隐藏index.php文件<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L] </IfModule>2.Nginx服务器htaccess如何配置隐藏index.php文件server { listen 80; #listen [::]:80 default_server ipv6only=on; server_name jiqing.dexin.com; index index.html index.htm index.php admin.php; root /home/wwwroot/default/dexin/dragon/public; #error_page 404 /404.html; include enable-php-pathinfo.conf; location /nginx_status { stub_status on; access_log off; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } location ~ /\. { deny all; } /* 起作用 location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=/$1 last; } } */ access_log /home/wwwlogs/access.log; }
2023年12月18日
69 阅读
0 评论
0 点赞
2023-12-18
PHP原生操作EXcel
PHP操作Excel phpExcel类下载1.PHP生成EXCEL include_once "./lib/PHPExcel.php"; //实例化PHPExcel类,类似于在桌面上新建一个Excel表格 $PHPExcel = new \PHPExcel(); //获得当前活动sheet的操作对象 默认创建一个活动的窗口 $PHPSheet = $PHPExcel->getActiveSheet(); //给当前活动sheet设置名称 $PHPSheet->setTitle('活动一日游'); // 1.逐个单元格去填充数据,适合数据量较大的情况 //给当前活动sheet填充数据,数据填充是按顺序一行一行填充的,假如想给A1留空,可以直接setCellValue('A1',''); // $PHPSheet->setCellValue('A1','姓名')->setCellValue('B1','分数'); // $PHPSheet->setCellValue('A2','张三')->setCellValue('B2','50'); // 2.一次性填充数据,适合数据量较小的情况 $array = [ ["姓名","分数"], ["老王","90"], ["小白","80"], ]; $PHPSheet->fromArray($array); //按照指定格式生成Excel文件,'Excel2007'表示生成2007版本的xlsx, $PHPWriter = \PHPExcel_IOFactory::createWriter($PHPExcel,'Excel2007'); //表示在$path路径下面生成demo.xlsx文件 $PHPWriter->save('./demo.xlsx');2.PHP生成并下载EXcel include_once "./lib/PHPExcel.php"; //实例化PHPExcel类,类似于在桌面上新建一个Excel表格 $PHPExcel = new \PHPExcel(); //获得当前活动sheet的操作对象 默认创建一个活动的窗口 $PHPSheet = $PHPExcel->getActiveSheet(); //给当前活动sheet设置名称 $PHPSheet->setTitle('活动一日游'); // 1.逐个单元格去填充数据,适合数据量较大的情况 //给当前活动sheet填充数据,数据填充是按顺序一行一行填充的,假如想给A1留空,可以直接setCellValue('A1',''); // $PHPSheet->setCellValue('A1','姓名')->setCellValue('B1','分数'); // $PHPSheet->setCellValue('A2','张三')->setCellValue('B2','50'); // 2.一次性填充数据,适合数据量较小的情况 $array = [ ["姓名","分数"], ["老王","90"], ["小白","80"], ]; $PHPSheet->fromArray($array); //按照指定格式生成Excel文件,'Excel2007'表示生成2007版本的xlsx, $PHPWriter = \PHPExcel_IOFactory::createWriter($PHPExcel,'Excel2007'); //表示在$path路径下面生成demo.xlsx文件 $PHPWriter->save('./demo.xlsx');
2023年12月18日
64 阅读
0 评论
0 点赞
2023-12-17
揭开HTTPS神秘面纱
http是非常常见的应用层协议,是超文本传输协议的简称,其传输的内容都是明文的。在这个混乱的世界,明文传输信息想想就可怕,网络“小混混”的手段远比我们这些凡人高明得多,他们有一万种方式劫持,篡改我们的数据。对于一个网站或者服务,如果你给你的用户两个选择:通讯数据明文传输,速度快;通讯数据加密传输,但是速度可能会稍微慢一点.我想,只要脑袋没有长歪的用户都宁愿牺牲一点速度去换取数据传输的安全。这样,https的存在就具备了合理性,https中的s表示SSL或者TLS,就是在原http的基础上加上一层用于数据加密、解密、身份认证的安全层。一层层揭开HTTPS神秘面纱本文试图通过层层渐进方式来通俗的阐述https的原理,若有错误,欢迎大家指正。虽然要层层渐进,但是我们不妨先奉上刚画好的还热乎着的https通信完整流程图:从上图可以看到,右边有一堆钥匙,一看到钥匙我们就能想到这个过程免不了加密。另外,那些钥匙长得还不一样,有些只有一把,有些是一对,嗯,是的,你看得真仔细。好的,扯远了,现在开始层层渐进。第一层(安全传输数据)假如我们要实现一个功能:一个用户A给一个用户B发消息,但是要保证这个消息的内容只能被A和B知道,其他的无论是墨渊上神还是太上老君都没办法破解或者篡改消息的内容。如上图,需求就是这么简单,A给B发一条消息,因为比较私密,不想被其他人看到。由于消息不想被其他人看到,所以我们自然而然就会想到为消息加密,并且只有A和B才有解密的密钥。这里需要考虑几点:使用什么加密方式?密钥怎么告知对方?对于第一个问题,加密算法分为两类:对称加密和非对称加密,这里我们选择对称机密,原因有如下几个:对称加密速度快,加密时CPU资源消耗少;非对称加密对待加密的数据的长度有比较严格的要求,不能太长,但是实际中消息可能会很长(比如你给你女朋友发情书),因此非对称加密就满足不了;对于第二个问题,这是导致整个https通信过程很复杂的根本原因。如果A或B直接把他们之间用于解密的密钥通过互联网传输给对方,那一旦密钥被第三者劫持,第三者就能正确解密A,B之间的通信数据。第二层(安全传输密钥)通过第一层的描述,第二层需要解决的问题是:安全地传输A,B之间用于解密数据的密钥。因为如果传输过程中这把密钥被第三者拿到了,就能解密传通信数据,所以,这把密钥必须得加密,就算第三者劫持到这把加密过的密钥,他也不能解密,得到真正的密钥。这里有一个问题,那要用什么方式加密这把密钥呢?如果使用对称加密,那这个对称加密的密钥又怎么安全地告诉对方呢?完了,陷入死循环了.... 所以,一定不能用对称加密那就是用非对称加密咯,那如何应用非对称加密来加密那把密钥呢?考虑如下方式:客户端: 我要发起HTTPS请求,麻烦给我一个非对称加密的公钥;服务器: (生成一对非对称加密的密钥对,然后把公钥发给客户端),接着,这是公钥;客户端:(收到公钥,生成一个随机数,作为上图中那一把密钥,用刚才收到的公钥加密这个密钥,然后发给服务器)这是我刚生成的加密过的密钥;服务器:(收到加密后的密钥,用本地的第一步自己生成的非对称加密的私钥解密,得到真正的密钥);现在,客户端和服务器都知道了这把密钥,就能愉快地用这个密钥对称加密数据...分析一下上面步骤的可行性:上述步骤中最终用于加密数据的密钥是客户端生成并且用公钥加密之后传给服务器的,因为私钥只有服务器才有,所以也就只有服务器才能解开客户端上报的密钥;要保证传输的密钥只能被服务器解密,就得保证用于加密密钥的公钥一定是服务器下发的,绝对不可能被第三方篡改过;因为还可能存在一种"中间人攻击"的情况,如下图:感谢XngPro的指正,上图第7步,应该是『坏人用B私钥解密得到K,然后使用A公钥加密发给服务器』这种情况下,客户端和服务器之间通信的数据就完全被坏人破解了。第三层(安全传输公钥)从上一层可以知道,要保证数据的安全,就必须得保证服务器给客户端下发的公钥是真正的公钥,而不是中间人伪造的公钥。那怎么保证呢?那就得引入数字证书了,数字证书是服务器主动去权威机构申请的,证书中包含了上一个图中的加密过的A公钥和权威机构的信息,所以服务器只需要给客户端下发数字证书即可。现在流程图如下:那数字证书中的A公钥是如何加密的呢?答案是非对称加密,只不过这里是使用只有权威机构自己才有的私钥加密。等一下,既然A公钥被权威机构的私钥加密了,那客户端收到证书之后怎么解密证书中的A公钥呢?需要有权威机构的公钥才能解密啊!那这个权威机构的公钥又是怎么安全地传输给客户端的呢?感觉进入了鸡生蛋,蛋生鸡的悖论了~~别慌,答案是权威机构的公钥不需要传输,因为权威机构会和主流的浏览器或操作系统合作,将他们的公钥内置在浏览器或操作系统环境中。客户端收到证书之后,只需要从证书中找到权威机构的信息,并从本地环境中找到权威机构的公钥,就能正确解密A公钥。这样就绝对安全了吗?既然权威技能能给服务器签发数字证书,那为什么就不可能给中间人签发数字证书呢?毕竟赚钱的生意权威机构也不会拒绝的呀。试想一下:服务器给客户端下发数字证书时证书被中间人劫持了,中间人将服务器的证书替换成自己的证书下发给客户端,客户端收到之后能够通过权威机构的公钥解密证书内容(因为中间人的证书也是权威机构私钥加密的),从而获取公钥,但是,这里的公钥并不是服务器原本的A公钥,而是中间人自己证书中的B公钥。从第二层可知,如果不能保证客户端收到的公钥是服务器下发的,那整个通信数据的安全就没法保证。简单总结就是证书被调包~所以,还得保证客户端收到的证书就是服务器下发的证书,没有被中间人篡改过。第四层(安全传输证书)这一层,我们的任务是:保证客户端收到的证书是服务器下发的证书,没有被中间人篡改过。所以,这里就有两个需求:证明证书内容没有被第三方篡改过;证明证书是服务器下发的;其实这些问题,数字证书本身已经提供方案了,数字证书中除了包含加密之后的服务器公钥,权威机构的信息之外,还包含了证书内容的签名(先通过Hash函数计算得到证书数字摘要,然后用权威机构私钥加密数字摘要得到数字签名),签名计算方法以及证书对应的域名。这样一来,客户端收到证书之后:使用权威机构的公钥解密数字证书,得到证书内容(服务器的公钥)以及证书的数字签名,然后根据证书上描述的计算证书签名的方法计算一下当前证书的签名,与收到的签名作对比,如果一样,表示证书一定是服务器下发的,没有被中间人篡改过。因为中间人虽然有权威机构的公钥,能够解析证书内容并篡改,但是篡改完成之后中间人需要将证书重新加密,但是中间人没有权威机构的私钥,无法加密,强行加密只会导致客户端无法解密,如果中间人强行乱修改证书,就会导致证书内容和证书签名不匹配。所以证书签名就能判断证书是否被篡改再考虑证书被掉包的情况:中间人同样可以向权威机构申请一份证书,然后在服务器给客户端下发证书的时候劫持原证书,将自己的假证书下发给客户端,客户端收到之后依然能够使用权威机构的公钥解密证书,并且证书签名也没问题。但是这个时候客户端还需要检查证书中的域名和当前访问的域名是否一致。如果不一致,会发出警告!从上面的分析可以看到,数字证书中的信息确实能让客户端辨别证书的真伪。
2023年12月17日
47 阅读
0 评论
0 点赞
2023-12-17
PHP生成二维码
本地下载 二维码是一个近几年来移动设备上超流行的一种编码方式,最早出现在20世纪20年代,到1988年才引入中国。现在,日常生活中更是随处可见。它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化点。下面通过一些小案例,不靠第三方平台,轻松制作自己的二维码图片QRCodeQR Code码,是由Denso公司于1994年9月研制的一种矩阵二维码符号,它具有一维条码及其它二维条码所具有的信息容量大、可靠性高、可表示汉字及图象多种文字信息、保密防伪性强等优点。超高速从QR Code码的英文名称Quick Response Code可以看出,超高速识读特点是QR Code码区别于四一七条码、Data Matrix等二维码的主要特性。由于在用CCD识读QR Code码时,整个QR Code码符号中信息的读取是通过QR Code码符号的位置探测图形,用硬件来实现,因此,信息识读过程所需时间很短,它具有超高速识读特点。用CCD二维条码识读设备,每秒可识读30个含有100个字符的QR Code码符号;对于含有相同数据信息的四一七条码符号,每秒仅能识读3个符号;对于Data Matrix矩阵码,每秒仅能识读2~3个符号。QR Code码的超高速识读特性使它能够广泛应用于工业自动化生产线管理等领域。全方位QR Code码具有全方位(360°)识读特点,这是QR Code码优于行排式二维条码如四一七条码的另一主要特点,由于四一七条码是将一维条码符号在行排高度上的截短来实现的,因此,,它很难实现全方位识读,其识读方位角仅为±10°。能够有效地表示汉字由于QR Code码用特定的数据压缩模式表示汉字,它仅用13bit可表示一个汉字,而四一七条码、Data Matrix等二维码没有特定的汉字表示模式,因此仅用字节表示模式来表示汉字,在用字节模式表示汉字时,需用16bit(二个字节)表示一个汉字,因此QR Code码比其它的二维条码表示汉字的效率提高了20%。参数$level表示容错率,也就是有被覆盖的区域还能识别。它有四个级别,分别是 L, H, M, QQR_ECLEVEL_L, 最大 7% 的错误能够被纠正;QR_ECLEVEL_M, 最大 15% 的错误能够被纠正;QR_ECLEVEL_Q, 最大 25% 的错误能够被纠正;QR_ECLEVEL_H, 最大 30% 的错误能够被纠正;include 'phpqrcode.php'; $value = 'https://www.itnan.cc'; //二维码内容 $errorCorrectionLevel = 'L';//容错级别 $matrixPointSize = 6;//生成图片大小 QRcode::png($value, 'qrcode.png', $errorCorrectionLevel, $matrixPointSize, 2); //生成二维码图片 $logo = 'logo.jpg';//准备好的logo图片 $QR = 'qrcode.png';//已经生成的原始二维码图 if ($logo !== FALSE) { $QR = imagecreatefromstring(file_get_contents($QR)); $logo = imagecreatefromstring(file_get_contents($logo)); $QR_width = imagesx($QR);//二维码图片宽度 $QR_height = imagesy($QR);//二维码图片高度 $logo_width = imagesx($logo);//logo图片宽度 $logo_height = imagesy($logo);//logo图片高度 $logo_qr_width = $QR_width / 5; $scale = $logo_width/$logo_qr_width; $logo_qr_height = $logo_height/$scale; $from_width = ($QR_width - $logo_qr_width) / 2; //重新组合图片并调整大小 imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); } //输出图片 imagepng($QR,'phpmaster.png');
2023年12月17日
52 阅读
0 评论
0 点赞
2023-12-16
HTTP常见状态码
HTTP状态码说明1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码。代码 说明100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。2xx (成功)表示成功处理了请求的状态代码。代码 说明200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。201 (已创建) 请求成功并且服务器创建了新的资源。202 (已接受) 服务器已接受请求,但尚未处理。203 (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。204 (无内容) 服务器成功处理了请求,但没有返回任何内容。205 (重置内容) 服务器成功处理了请求,但没有返回任何内容。206 (部分内容) 服务器成功处理了部分 GET 请求。3xx (重定向)表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。代码 说明300 (多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。305 (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。4xx(请求错误)这些状态代码表示请求可能出错,妨碍了服务器的处理。代码 说明400 (错误请求) 服务器不理解请求的语法。401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。403 (禁止) 服务器拒绝请求。404 (未找到) 服务器找不到请求的网页。405 (方法禁用) 禁用请求中指定的方法。406 (不接受) 无法使用请求的内容特性响应请求的网页。407 (需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。408 (请求超时) 服务器等候请求时发生超时。409 (冲突) 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。410 (已删除) 如果请求的资源已永久删除,服务器就会返回此响应。411 (需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。412 (未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。413 (请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。414 (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。415 (不支持的媒体类型) 请求的格式不受请求页面的支持。416 (请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码。417 (未满足期望值) 服务器未满足"期望"请求标头字段的要求。5xx(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。代码 说明500 (服务器内部错误) 服务器遇到错误,无法完成请求。501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。
2023年12月16日
50 阅读
0 评论
0 点赞
1
...
3
4
5
...
9