使用GET方法上传文件

2023-12-27

众所周知,文件上传最常使用POST方法。那么,为什么不能GET方法可以用来代替文件上传吗?是否有针对 HTTP 的具体禁止GET上传?


GET 请求可能包含实体主体

RFC 2616 不阻止实体正文作为 GET 请求的一部分。这经常被误解,因为 PHP 的特性把水搅浑了。名字不好的 $_GET超全球。$_GET技术上与 HTTP 无关GET请求方法——它只不过是来自请求 URI 查询字符串的 url 编码参数的键值列表。您可以访问$_GET即使请求是通过 POST/PUT/etc 发出的。很奇怪,对吧?这不是一个很好的抽象,不是吗?

为什么 GET 实体主体是一个坏主意

那么什么是关于 GET 方法的规范说明 http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1.1... 出色地:

特别是,已经建立了这样的约定:GET 和 HEAD 方法不应该具有执行检索以外的操作的意义。这些方法应该被认为是“安全的”。

因此,对于 GET 来说,重要的是确保任何 GET 请求都是安全的。尽管如此,禁令还是 仅有的“不应该”...从技术上讲,HTTP 仍然允许 GET 请求导致不符合的操作 严格基于“检索”。

当然,从语义的角度来看,使用名为GET执行除 “获取”资源也没有多大意义。

当 GET 实体主体完全错误时

关于幂等性,规范说:

方法还可以具有“幂等性”属性(除了错误或过期问题) N > 0 个相同请求的副作用与单个请求的副作用相同。方法 GET、 HEAD、PUT 和 DELETE 共享此属性。

这意味着 GET 方法must not对于多个请求有不同的副作用 相同的资源。因此,无论实体主体作为 GET 请求的一部分出现如何,副作用 必须始终相同。通俗地说,这意味着如果您发送带有实体主体的 GET 100次服务器无法创建100个新资源。无论发送一次还是 100 次请求都必须 得到相同的结果。这严重限制了 GET 方法发送实体主体的有用性。

如有疑问,在评估功效时始终回溯到安全性/幂等测试 方法及其产生的副作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用GET方法上传文件 的相关文章

随机推荐

  • 在 TypeScript 中导入音频文件

    我在 TypeScript React 应用程序 使用 create react app 制作 中导入音频文件时遇到问题 我正在尝试像这样导入文件 import note from audio note1s mp3 但我收到了 TypeSc
  • 使用 React Hooks 的倒计时器

    所以定时器起作用了 如果我硬编码this state使用特定的倒计时数字 计时器在页面加载后开始倒计时 我希望时钟在单击按钮时开始倒计时 并具有改变时间的功能null of the state到一个随机生成的数字 我对 React 有点陌生
  • 哪个会使 Class 文件更大? import java.awt.*,还是一堆或单个导入语句? [复制]

    这个问题在这里已经有答案了 好的 如果我有一个项目使用 import java awt Graphics import java awt Graphics2D import java awt Dimension import java aw
  • PyCaffe中的layer模块在哪里定义

    我正在修改一个Caffe教程 http nbviewer jupyter org github BVLC caffe blob master examples pascal multilabel with datalayer ipynb实现
  • 检查父类中是否存在类

    我想检查某个元素的父元素之一中是否存在某个类 我不想使用任何库 只想使用普通 JS 在下面的示例中 如果相关元素位于以 the class 作为类名的元素的子元素中的某个位置 则应返回 true 我认为 jQuery 会是这样的 if th
  • bitbake:构建系统如何选择多个层提供的配方

    元层提供配方 meta recipes graphics x11 common xserver nodm init bb 元 oe 层提供配方 meta oe recipes graphics xserver nodm init xserv
  • 在生产应用程序中使用谷歌凭据的最佳方法是什么?

    我正在为 STT 构建 C net 应用程序 并且正在手动创建凭据 我发现文档对我来说非常混乱 我不知道如何正确添加凭据 我添加了一个项目 创建了一个 json 凭证并下载并保存在一个文件夹中 并手动指向它GoogleCredential获
  • 为什么以及何时使用 LINQ? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我从未在我的任何项目中使用过 LINQ 我一直在我的商业应用程序项目中使用 ado net OR 工具 所以我想知道 LINQ 有什么好处 为什
  • Python OpenCV 多处理 cv2.VideoCapture mp4

    我想运行一些mp4进程内的视频 但只有摄像头有效 软件卡住 没有错误消息 我已经尝试过这两种方法 但发现它无法运行 打印是代码被卡住的地方 import cv2 import multiprocessing dispW 640 dispH
  • SQL Server 2008 域更改

    在不久的将来 我的组织将不得不更改其中一台 SQL 服务器的计算机名称和 Windows 域 服务器运行SQL Server 2008企业版 操作系统为Windows Server 2008标准版 我找到了处理机器名称更改的良好参考资料 但
  • 致命错误:在第 146 行 ...\..\Abstract.php 中找不到类“Mage_Enterprise_Giftwrapping_Block_Adminhtml_Product_Helper_Form_Config”

    我正在将 magento 企业版迁移到社区版 我就快完成了 但后端几乎没有问题 如果我转到 管理产品 并单击任何产品 我会收到此错误 致命错误 在第 146 行 lib Varien Data Form Abstract php 中找不到类
  • Windows 中的 Visual Studio Code 命令无法正常工作

    我的问题是 在 Windows 上手动将 VS Code 命令行添加到 PATH 时 如何才能使其正常工作 在 Visual Studio Code 内部 我首先尝试使用复选框 安装到 PATH 来安装它 但是当我输入code在命令提示符中
  • 从文本中解析子字符串

    我正在编写一个宏 用于将 LDAP 格式的名称列表转换为 名字 姓氏 区域 对于那些不知道 LDAP 是什么样子的人 如下所示 CNN 约翰 史密斯 区域 OU 法律 DC 示例 DC 命令 在 Excel VBA 中 我似乎无法使用 st
  • 如何触发附加到 ZF2 中共享事件管理器的事件?

    附加到 本地 事件管理器的事件 public class myClass implements EventManagerAwareInterface public function construct this gt getEventMan
  • 在 WIN32 中的“BUTTON”类窗口上显示位图

    Edit 我认为在创建子窗口 即我的按钮 期间不会发送 WM CREATE 消息 因此 通过在 WM CREATE 期间调用 SendMessage 我将向尚未创建的窗口发送一条消息 目前的解决方案是在 WM SHOWWINDOW 消息期间
  • 为自定义类型创建自定义模型绑定器

    在 ASP NET CORE 1 1 项目中 我有以下模型 public class GetProductsModel public OrderExpression OrderBy get set OrderExpression 是一个具有
  • 免费注册 COM:引用 VB6 DLL 的 VB6 可执行文件

    因此 我有一个引用多个 VB6 COM DLL 的 VB6 可执行文件 我是否可以即时生成可执行文件的清单以及每个引用的 DLL 的清单 如果是这样 那又如何呢 我想在构建过程中执行此操作 而无需将 COM DLL 注册为该过程的一部分 注
  • 如何从自适应卡获取消息

    我使用有 2 个操作的自适应卡 actions type Action Submit title Cards related queries data Cards intent type Action Submit title Accoun
  • OS X AppEngine - 导入错误:没有名为 _sqlite3 的模块

    更新 这是我在全新安装的 OS X 10 8 3 上使用 1 8 0 App Engine SDK 时遇到的问题 首先 有很多关于 SO 的具有类似标题的问题 我已经检查过它们 但我不相信它们回答了我的问题 大多数情况下 他们建议获取 li
  • 使用GET方法上传文件

    众所周知 文件上传最常使用POST方法 那么 为什么不能GET方法可以用来代替文件上传吗 是否有针对 HTTP 的具体禁止GET上传 GET 请求可能包含实体主体 RFC 2616 不阻止实体正文作为 GET 请求的一部分 这经常被误解 因