重定向 POST 请求并保留数据。可能的?

2023-12-07

我的问题很简单。我需要将文件直接上传到正确的服务器(当前工作负载较低)。

因此我这样做:

<?php
$server = file_get_contents('http://my-api.com/upload-server.php'); // returns url
?>

然后我打印我的表格

<form method="post" action="<?php echo $server; ?>"...

现在我想将此步骤转移到上传开始时,如下所示:

<form method="post" action="http://my-api.com/upload-gateway.php"...

这个 url 应该重定向到“真实”服务器。

这样上传页面就不会减慢加载速度,并且我有可以缓存、嵌入等的静态 html 代码...

问题是,这对于 get 请求非常有效,但对于 post 请求则不行。

使用位置标头重定向时,该请求似乎会转换为 get 请求。所有发布数据都会丢失。

这是不可能的还是我做错了?是的,我考虑过远程动态 JavaScript,它首先使用正确的服务器打印 html 代码。我宁愿不这样做......

有任何想法吗?也许替代上传技术?

edit:

这是我使用的确切 html 代码:

<form method='post' enctype='multipart/form-data' action='http://storage.ivana.2x.to/rest.php?action=target'> 
<input type=hidden name=testfield value="test">
File to upload: <input type=file name=upfile><br> 
Notes about the file: <input type=text name=note><br> 
<br> 
<input type=submit value=Press> to upload the file!
</form> 

这是我使用的重定向代码:

if($_GET["action"] == "target") {
    header("Location: http://storage.ivana.2x.to/rest.php?action=test");
}

这是我用来查看结果的输出代码:

if($_GET["action"] == "test") {
    echo "<pre>";
    var_dump($_POST);
    var_dump($_GET);
    var_dump($_FILES);
}

上传小文件时的结果如下:

array(0) {
}
array(1) {
  ["action"]=>
  string(4) "test"
}
array(0) {
}

如果您确实想通过代码实现负载平衡,同时可能使用上传表单缓存页面,请首先选择默认下载服务器(url);然后,onSubmit调用服务器并找到最佳的上传目标并相应地调整action属性。

通过这种方法,不激活JS的用户仍然可以获得他们想要的东西,启用JS的用户可以获得更好的上传目标,并且仍然可以缓存。此外,缓存请求的时机可能更具机会性,因为 URL 请求将在实际上传之前不久发生。

唯一的问题是调用获取 URL,与上面描述的过程相比,您可以更轻松地调整性能(我想)。在我看来,通过标头指令和/或 cURL 调用上传文件两次对于缓存单个 html 文件来说似乎不是一个好的权衡。但我也不知道你面临的是什么。

如果您不想大量管理服务器环境并引入负载平衡,这是我建议的选项。

另请注意,我并不是一名服务器管理员。

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

重定向 POST 请求并保留数据。可能的? 的相关文章

  • 未调用 Ajax 回调。如何解决这个问题?

    我再次来这里寻求您的建议 我有一些 AJAX 调用 用于从我的编辑器 PHP 在线编辑器 运行代码 大家可以来看看my site http web guru99 com 我有一些 ajax 调用来发送编辑器的数据并接收输出 问题 for 循
  • 如何使用 jQuery 检查文件输入大小?

    我有一个具有文件上传功能的表单 如果用户尝试上传的文件太大 我希望能够有一些不错的客户端错误报告 是否有一种方法可以使用 jQuery 检查文件大小 或者纯粹是在客户端上或以某种方式将文件发送回服务器进行检查 您实际上无权访问文件系统 例如
  • 将浮点值转换为灰度十六进制颜色值

    这个问题又快又简单 我有一个二维浮点数组 0 0000000 到 1 0000000 我想将这些数字转换为颜色值 000000 到 ffffff 请注意 我所说的只是灰度值 0 黑色 0 5 中灰色 1 白色 有谁知道如何用 javascr
  • 在PHP中根据日期显示图像

    在我的计算机上的某个位置 我有一个 PHP 脚本 用于根据日期显示图像 这将允许我在特定日期或选定日期之间显示不同的图像 并在当前日期未列出时显示默认日期要显示的特定图像 我最近的一个硬盘驱动器出现了问题 丢失了一堆文件 我担心这个脚本就是
  • 将数据传递到表单时的重定向后获取?

    我有几个场景 servlet 需要将数据从数据库检索到的记录传递到 JSP 中的表单 目前 我将此信息存储在请求中 使用 RequestDispatcher 转发到页面 一切都很好 然而 这不符合 PRG 模式 AFAIK 并且当然意味着刷
  • 命令“tinker”未定义

    从 5 3 升级到 5 4 后 请按照说明操作 为了继续使用 Tinker Artisan 命令 您还应该安装 laravel tinker 软件包 composer require laravel tinker 安装软件包后 您应该添加
  • str_getcsv到php中的多维数组

    我有这样的 csv 值 csv data test this thing hi there this is cool dude have fun 我想获取整个 CSV 字符串并将其读入多维数组 以便得到 array array test g
  • 在 PHP 中合并文件块

    出于教育目的 我想创建文件块上传 你们怎么知道所有块何时上传 我试图从temp并重命名它们 使它们按正确的顺序排列 然后与最后一个块将它们合并在一起 然而 我猜最后发送的并不是最后收到的 所以fopen on chunks 失败 因为它们尚
  • 无法获取子 DOM 元素

    注 由于问题有点复杂 为了可读性对代码进行了抽象 We ve a
  • Preg_match PHP 到 java 的翻译

    我在将 php preg match 转换为 java 时遇到一些问题 我以为我的一切都是正确的 但它似乎不起作用 这是代码 原始PHP Pattern for 44 Character UUID pattern 0 9A F 44 if
  • 将焦点和光标设置到文本输入字段/字符串 w 的末尾。 Jquery [重复]

    这个问题在这里已经有答案了 我有以下函数 将选择器添加到搜索输入作为高级选项 就像堆栈溢出高级搜索一样 当您单击要搜索的内容时 它会添加一个前缀 请参阅下面的 Jquery
  • 角度按钮单击旋转图标

    我有以下按钮
  • 在 PHP 中搜索多维数组中的值并获取其路径

    这是我的数组 array array 1 gt array title gt Level1 nodes gt array 11 gt array title gt sub1 company1 12 gt array title gt sub
  • PHP Amazon SDK,S3 存储桶访问被拒绝

    我第一次尝试使用 PHP AWS SDK aws aws sdk php 3 19 来使用 S3 我创建了一个存储桶 myfirstbucket jeremyc 我制定了一项政策 Version 2012 10 17 Statement E
  • 如何在C#中使用默认浏览器打开带有锚点(#)的html文件

    我正在尝试在 C 中打开上下文帮助文件 当我没有指定锚点时 它工作得很好 Process Start C Help Help htm 但是当我指定锚点时 它不会打开 Process Start C Help Help htm Toc3420
  • 在 jQuery 中获取最接近元素的形式

    我编写了这个 js jquery 脚本来检查表单中的所有复选框 它工作得很好 但是这会检查页面上的所有复选框 无论它们是什么表单包装器 这是函数 function toggleCheck state var checkboxes jQuer
  • 如何在android中创建nanohttpd服务器?

    其实我也查过一些问题 然后去github上找了一下 但我是新来的 我无法理解这个例子 我想在android中创建http服务器 这样我就可以在PC浏览器中访问它 我有一个类扩展 nanohttpd 的实例 但服务器无法工作 不知道为什么 我
  • 从选择控件 html 复制所选项目的文本

    我有一个带有预定义值的选择控件 我希望我的用户能够使用 CTRL C 复制所选项目的文本 我不希望他们能够更改项目的文本 只需用鼠标 键盘选择它 这是一个显示问题的小提琴 我无法选择所选项目的文本 http jsfiddle net 5C3
  • Laravel - 保存在存储文件夹中的图像不向用户显示

    我有这段代码可以将图像保存在 storage app uploads 文件夹中 image main Image where property id id gt get file request gt file file destinati
  • 危险的 PHP 函数

    我将用户输入的 php 函数存储到 mySQL 数据库中 这些函数需要能够被执行 正如我们所知 这可以并且将会允许黑客先生将一个漂亮的网站变成瑞士奶酪 这些函数很简单 不需要任何高级的 php 编码 它们更多地涉及处理单个数据数组 因此 如

随机推荐

  • Tinder 像泛 iOS

    对于 iOS 中的 Tinder 应用程序 我假设他们在图像视图上使用平移手势识别器 为什么用户开始移动的图像下方会显示另一张图像 他们是否有另一个图像视图 并且在手势识别器完成后 动态设置图像视图手势识别器 最后在下面创建另一个图像视图
  • 使用自定义名称创建 Python 动态函数

    如果这个问题已经提出并得到回答 我们深表歉意 我需要做的概念非常简单 但不幸的是我无法在网上找到答案 我需要在运行时使用自定义名称在 Python Python2 7 中创建动态函数 每个函数的主体也需要在运行时构造 但对于所有函数来说 几
  • Stripe Payment API 与 Jetpack Compose 集成

    我不明白如何将 Stripe API 集成到 Compose 应用程序中 这是 Stripe 提供的代码片段 class CheckoutActivity AppCompatActivity lateinit var paymentShee
  • 如何检测可可中的右键单击和左键单击

    我想创建一个点击鼠标右键和左键的动作 单击可能会在 NSTableViewCell NSView 等上 就像我们右键单击窗口时会弹出一个窗口 有没有API可以完成这样的任务 如果没有 还有其他办法吗 预先感谢您对我的帮助 你必须覆盖NS响应
  • pickling 和 unpickling 用户定义的类

    我有一个用户定义的类 myclass 我将其存储在文件中pickle模块 但我在解封它时遇到问题 我有大约 20 个相同结构的不同实例 我将它们保存在不同的文件中 当我读取每个文件时 代码适用于某些文件 而不适用于其他文件 当我收到错误时
  • 计算大圆距离矩阵

    dist coords 使用欧几里得距离提供距离矩阵 它还提供了其他几个选项 但它没有提供任何选项 例如半正矢公式 distHaversine 计算给定的两组纬度 经度坐标我想要的距离 大圆 我想知道是否有一个现有的包 函数可以使用半正矢公
  • 如何在接口中公开方法而不将其公开给所有类

    我遇到一个问题 我正在使用特定的界面来处理很多事情 但是 我有一个特定的方法 我希望它仅适用于特定的一组类 基本上是一个internal方法 interface IThing function thisMethodIsPublic void
  • 无法在 Laravel 8 bootstrap 上编译 sass 文件

    当我尝试在 Laravel 版本 8 上编译引导脚手架时 出现以下错误 node modules bootstrap scss mixins grid scss 67 16 row cols node modules bootstrap s
  • Sass ID 选择器在 React 和 create-react-library 中不起作用

    我有一个正在制作的图书馆Header组件和一个Button成分 我给了他们 ID 以在我的 SASS 文件中识别他们 这是我目前的情况 index js import React from react import styles modul
  • lex & yacc 获取当前位置

    在 lex yacc 中有一个名为 YY INPUT 的宏 可以重新定义 例如以这样的方式 define YY INPUT buf result maxlen do const int n gzread gz yyin buf maxlen
  • 使用 sed 删除最后一个换行符[重复]

    这个问题在这里已经有答案了 怎么删除最后一个 n从一个文件 该文件有一个最后一个空行为最后一个文本行中的换行符创建 我正在使用这个命令 sed s d 但那个空白行没有被删除 Why is sed打印换行符 当你读到sedPOSIX标准 然
  • 在 Android 的默认媒体播放器中显示图像

    这是我的代码 首先 我录制了一个音频文件并开始播放 用于播放音频文件 play the recorded audio public void playAudio try Intent intent new Intent android co
  • 如何将 Android Studio 项目从 Windows 传输到 Mac OS X?

    我正在尝试将 Android Studio 项目从 Windows 计算机传输到 Mac 我将进入我的 Android Studio 项目 选择整个文件夹 MyApplication 然后复制到外部硬盘驱动器 当我在 Mac 上时 我尝试在
  • @ViewScoped bean 在 JSF 中如何以及何时被销毁?

    的生命周期 RequestScoped and SessionScopedBean 管理豆由 Servlet 容器本身管理 因为它们基本上存储为HttpRequest and HttpSession分别 JSF 如何管理应用程序的生命周期
  • Bing 地图 V8 - 未捕获的引用错误:Microsoft 未定义

    我在我的应用程序中使用 bing 地图进行搜索 必应地图V8控件 我用过这个CDN 之后当我尝试使用 Microsoft Maps 时 它是在说 Uncaught ReferenceError Microsoft is not define
  • zf2 在两个不同的数据库之间建立连接

    我正在尝试使用 Zend Framework 2 在放置在不同数据库中的两个表之间进行联接 第一个表称为users并存储在数据库中admin 第二个表称为等级制度并存储在数据库中customer 我在 global php 中加载数据库适配
  • ThreeJS 中 OrbitControls 中的惯性

    我正在使用 THREE OrbitControls 来旋转我的对象 不过 我想为相机旋转添加一些惯性 如果有人停止移动鼠标 相机会在一段时间后停止 我怎样才能做到这一点 这是在 OrbitControls js 中添加惯性的非常简单的方法
  • 为什么顶部和底部边距缺失? [复制]

    这个问题在这里已经有答案了 separator border 1px solid 000000 margin 10px div span hello span span class separator span span world spa
  • 如何在java中将org.w3c.dom.Element输出为字符串格式?

    我有一个org w3c dom Element对象传递到我的方法中 我需要查看整个 xml 字符串 包括其子节点 整个对象图 我正在寻找一种可以转换的方法Element转换为 xml 格式字符串 我可以System out println在
  • 重定向 POST 请求并保留数据。可能的?

    我的问题很简单 我需要将文件直接上传到正确的服务器 当前工作负载较低 因此我这样做 然后我打印我的表格