首页 > 其他分享 >请求方法:GET 与 POST

请求方法:GET 与 POST

时间:2024-07-30 10:06:03浏览次数:10  
标签:body HTTP 请求 GET URL POST

根据 RFC 规范,GET 的语义是从服务器获取指定的资源,GET 请求的参数位置一般是写在 URL 中,URL 规定只能支持 ASCII,所以 GET 请求的参数只允许 ASCII 字符 ,而且浏览器会对 URL 的长度有限制(HTTP协议本身对 URL长度并没有做任何规定)。

根据 RFC 规范,POST 的语义是根据请求负荷(报文body)对指定的资源做出处理,具体的处理方式视资源类型而不同。POST 请求携带数据的位置一般是写在报文 body 中,body 中的数据可以是任意格式的数据,只要客户端与服务端协商好即可,而且浏览器不会对 body 大小做限制。

安全和幂等的概念: - 在 HTTP 协议里,所谓的「安全」是指请求方法不会「破坏」服务器上的资源。 - 所谓的「幂等」,意思是多次执行相同的操作,结果都是「相同」的。

从 RFC 规范定义来看: - GET 的语义是请求获取指定的资源。GET 方法是安全、幂等、可被缓存的。 - POST 的语义是根据请求负荷(报文主体)对指定的资源做出处理,具体的处理方式视资源类型而不同。POST 不安全,不幂等,(大部分实现)不可缓存。

具体来看,新增删除数据使用 GET 方法,这样 GET 就不是安全幂等的;同理,查询数据使用 POST,那么 POST 是安全幂等的,这需要看开发者自行开发的方法。 这里注意,HTTP 传输的内容都是明文的,虽然在浏览器地址栏看不到 POST 提交的 body 数据,但是只要抓个包就都能看到了。所以,要避免传输过程中数据被窃取,就要使用 HTTPS 协议,这样所有 HTTP 的数据都会被加密传输。

理论上,任何请求都可以带 body 的。所以之前说的 GET 也可以带 body,只是 RFC 规范下 GET 不需要用到 body。

标签:body,HTTP,请求,GET,URL,POST
From: https://www.cnblogs.com/NETYZreall/p/18331629

相关文章

  • Azure 工作项 Azure REST API POST 请求 - 503 服务不可用 0x80070057,无效请求
    我正在尝试使用python脚本以编程方式在Azure板上创建问题卡。我正在使用PAT(个人访问令牌)。headers=base64encodedPATheaders[Content-Type']='application/json-patch+json'payload=dictionary_of_different_values_to_setrequesturl=f"https://dev.azure.co......
  • 聊聊在springcloud gateway如何获取请求体
    前言在我们扩展scg时,获取requestbody也是一个挺常见的需求了,比如记录日志,我们要获取请求体里面的内容。在HTTP协议中,服务器接收到客户端的请求时,请求体(RequestBody)通常是以流的形式传输的。这个流在设计上是只读且不可重复读取的。即requestbody只能读取一次,但我们很多时候是更......
  • os.system调用执行os.getcwd
    在编程中遇到一个有趣的执行,先说结果,os.system所执行若有获取当前路径的方法,会获取so.system所在路径,而不是正在执行的程序路径,如果有朋友调用发现一直报错,可以看一下报错信息。在内置库os的system可以执行python文件名,这种方式执行py程序。而os.getcwd会获取当前文......
  • PostgreSQL 之 to_timestamp函数
    to_timestamp是PostgreSQL中的一个函数,用于将字符串或数字转换为时间戳。以下是关于to_timestamp的详细介绍:引入版本to_timestamp函数在PostgreSQL7.3版本中引入。语法to_timestamp有两种主要的用法:1.将字符串转换为时间戳to_timestamp(text,text)第一......
  • 【C语言】输入、输出函数知识、getchar()、putchar()、 scanf()、printf()
    函数的声明和定义1.1 函数声明1.告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数声明决定不了。2.函数的声明一般出现在函数的使用之前。要满足先声明后使用。3.函数的声明一般要放在头文件中的。1.2C本身是不提供输入输出功能的,需要......
  • Vue axios 请求方式汇总
    1.发送form-data形式letformData=newFormData();formData.append('username',data.username);//添加键值对formData.append('password',data.password);//添加键值对axios.post('http:/xxx/cms-admin/user/login',formData).then(response=&......
  • [Typescript] handle event.target type in Form
    TheerrorweencounteredinthischallengewasthattheEventTarget|nulltypewasincompatiblewiththerequiredparameteroftypeHTMLFormElement.Theproblemstemsfromthefactthatthesetypesdon'tmatch,andnullisnotpermitted:constdata......
  • curl发送get和post请求时遇到&截断的问题解决
    get的parameter里带&被截断处理第一种是双引号括住 第二种是加反斜杠转义 post请求的body里有参数的value带了&curl-XPOSThttp://qa-ci.fuxi.netease.com:36800/job/xxxxx/xxxx--userxxxx:xxxxx-d token=popo -d"msg=cd/ssd/deployment_bash&&bashkill.b......
  • get_current_tty 使用
    get_current_tty使用我的博客在开发内核驱动时,可以使用get_current_tty接口获取当前所在的终端,将日志打印到当前终端窗口中。比如,如果我们是通过SSH连接到SSH服务器上,通过printk等内核打印方式打印的日志内容会存储到系统日志中,通过dmesg可以查看,不会像用户态程序中......
  • BeanPostProcessor 接口和@PostConstruct 在使用姿势上差异
    先说结论接口BeanPostProcessor更灵活,可以实现bean生命周期里前,后分别执行某些内容,必须是spring管理的bean才能实现此功能,不加@Component不生效@ComponentpublicclassMyBeanPostProcessorimplementsBeanPostProcessor{@OverridepublicObjectpostProcessBe......