我开发了一个PHP Web应用程序.我给了用户一个选项,可以一次更新多个问题.在这样做时,有时用户遇到此错误.有没有办法增加apache中URL的长度?
我想为POST请求创建一个可缓存的HTTP响应.
我的实际实现响应POST请求的以下内容:
HTTP/1.1 201 Created
Expires: Sat, 03 Oct 2020 15:33:00 GMT
Cache-Control: private,max-age=315360000,no-transform
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 9
ETag: 2120507660800737950
Last-Modified: Wed, 06 Oct 2010 15:33:00 GMT
.........
Run Code Online (Sandbox Code Playgroud)
但看起来浏览器(Safari,Firefox测试)并没有缓存响应.
在HTTP RFC中,相应的部分说:
除非响应包含适当的Cache-Control或Expires头字段,否则对此方法的响应不可缓存.但是,303(请参阅其他)响应可用于指示用户代理检索可缓存资源.
所以我认为它应该被缓存.我知道我可以设置一个会话变量并设置一个cookie并进行303重定向,但我想缓存POST请求的响应.
有没有办法做到这一点?
PS:我从简单开始200 OK,所以它不起作用.
谢谢,
我正在从SOAP转向REST,我想让我的同事相信这是一个很好的举措.我们不需要SOAP可以提供的额外安全机制.对我们来说,SOAP和WSDL的开销多年来一直被证明是令人头痛的问题.
除了明显的简化之外,我们系统的一个非常有价值的优点是HTTP缓存机制.我已经阅读了有关该主题的内容,但我仍然不完全理解为什么这些缓存机制不能应用于SOAP消息.
是不是因为REST 按照惯例编码了url中的所有参数?由于GET调用也可以有一个带参数的主体,我知道它不受REST限制,但如果你这样做,缓存机制不起作用?
在API中进行搜索的最佳做法是什么?
我的 CloudFront 发行版中有两条路径,它们具有以下行为:
| 路径模式 | 起源 | 查看器协议政策 |
|---|---|---|
| /API/* | API起源组 | 将 HTTP 重定向到 HTTPS |
| /* | S3起源集团 | 将 HTTP 重定向到 HTTPS |
以及这些起源:
| 产地名称 | 源域 | 奥瑞金集团 |
|---|---|---|
| S3起源1 | us-east-1.s3.[废话] | S3起源集团 |
| S3起源2 | us-east-2.s3.[废话] | S3起源集团 |
| API来源1 | 一个域 | API起源组 |
| API起源2 | 一个域 | API起源组 |
此设置适用于 GET 请求,但如果我将 POST 请求添加到Cache Behaviour的缓存方法中,则会收到错误:
“不能包含缓存行为的 POST、PUT、PATCH 或 DELETE”
这对我来说没有意义。如果 AWS 客户确实使用 CloudFront每天处理数十亿个请求,并且 AWS 建议使用 CloudFront 源故障转移(这“需要源组”),那么就必须有某种方法来配置 CloudFront 以允许允许 POST 请求的源行为。这不是真的吗?所有这些 API 请求都是由该客户 GET 请求发出的吗?
需要明确的是,我的根本问题是,当 AWS 区域出现故障时,我想使用 CloudFront Origin Failover 在主要区域和次要区域之间切换。为了实现这一点,我不仅需要切换基于 S3 的前端流量(GET 请求),还需要切换后端流量(POST 请求)。
注意:如果您不使用源组,CloudFront 支持 POST 请求的路由行为。看来只有当我添加这个Origin Group(以支持第二个区域)时,才会出现这个错误。
我编写了一个RESTful Web服务,它只由设备使用,而不是浏览器.设备通过所有者现有的家用路由器访问互联网,并通过路由器每隔30秒发送一次HTTP请求与Web服务进行通信.这些请求主要是"轮询"请求,以查看Web服务是否具有该设备的任何新信息.
我想阻止任何ISP透明代理拦截请求并返回缓存的响应.我已经读过,这样做的一种方法是在请求的URL末尾附加一个随机查询字符串,以欺骗代理,使其认为它是一个唯一的请求.例如:
http://webservicedomain.com/poll/?randomNumber=384389
Run Code Online (Sandbox Code Playgroud)
我有能力做到这一点,但这是最好的方法吗?有点似乎是一个黑客.
大家好。
我遇到了下一个问题。我正在尝试执行 POST 请求,但是当我使用 Visual Studio Code 的调试器编译并执行它时,出现 400 Bad Request 错误。不管怎样,当我在 Postman 中执行相同的 POST 请求时,我收到了一个 200 OK 状态请求,其中包含继续我正在处理的下一部分所需的所有值。

此外,请求中有一个基本身份验证,在本例中我将其包含在 Postman 中并且工作正常。另一方面,在我的 C# 脚本中,我像这样执行它:
*这是我的模型,其中包含我的所有数据,用于将对象序列化为 JSON。
public class patient{
public string deviceId { get; set; }
public string deviceType { get; set; }
public string apiVersion { get; set; }
public string language { get; set; }
public externUserClass externUser{ get;set; }
public class externUserClass{
public externUserClass(string partnerExternalId, string username, string newPassword, string gender){
this.partnerExternalId = partnerExternalId;
this.username = username; …Run Code Online (Sandbox Code Playgroud) 我需要客户端(使用javascript)使其拥有的页面无效并基本上获取新版本?
我以为我可以使用标题来完成所有操作:使缓存的内容无效,If-Modified Headers?
如果没有办法让浏览器刷新当前的缓存版本,而没有发出新的请求(通过新的URL)......那么可以使用相同的原始URL请求来查看更新的内容?
嗨,我有一个登录系统的jQuery ajax请求.起初,它运作良好.但经过几次尝试后,它才刚刚开始出现负面反应.我检查了萤火虫,它说响应是,在我的情况下"连接".但是ajax响应只显示"Not_connected".我不知道该怎么办:(请帮帮我.
这是我的jquery代码:
var data_str = "username="+usrn+"&password="+pwd;
$.ajax({
type: "POST",
url: "index.php?rnd=" + Math.random(),
data : data_str,
complete : function(xhr,data){
if(data == 'connected'){window.location.href = 'admin.php';}
else if(data = 'not_connected'){ error_gen.html('Invalid username or password'); }
alert(data);
}
});
Run Code Online (Sandbox Code Playgroud)
AS代码为PHP代码:
$log_result = $u_obj->login_user();
if($log_result == true)/*user is connected*/
{
echo 'connected';
exit;/*stoping the script after sending the result*/
}
elseif($log_result == false)/*error while logging in*/
{
echo 'not_connected';
exit;/*stoping the script after sending the result*/
}
Run Code Online (Sandbox Code Playgroud) 我使用清漆与码头工人 - 见百万12 /清漆
GET请求工作得很好!
但我不知道我必须在设置中设置缓存POST请求.
在谷歌我发现很多帖子(从2010年或2011年),它说POST请求不能用清漆缓存 - 这句话是否仍然正确?
或者是否有另一种缓存POST请求的方法?
这里我的varnish.vcl设置:
vcl 4.0;
backend default {
...
}
# Respond to incoming requests.
sub vcl_recv {
unset req.http.Cookie;
}
# Set a header to track a cache HIT/MISS.
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Varnish-Cache = "HIT";
}
else {
set resp.http.X-Varnish-Cache = "MISS";
}
}
# Not cache 400 - 500 status requests
sub vcl_backend_response {
if (beresp.status >= 400 && beresp.status <= …Run Code Online (Sandbox Code Playgroud) 我正在使用Spring Framework在JSP上开发一个网页,我知道GET和POST之间的区别,如果页面发送了POST动作; 在浏览器区域,似乎没有发送信息,而在GET中则恰恰相反.
在Spring框架中,我通过控制器发送和获取信息,在编写控制器之前,我使用Request映射;
@RequestMapping(value = "/pri/SuperUser/ResetPassword.qib",method = RequestMethod.GET)
@Override
public ModelandView function(Model model){
...
...
Run Code Online (Sandbox Code Playgroud)
那么,在这种情况下使用GET和POST有什么区别.除了在浏览器字段中看到发送的信息之外,还应该有其他不同之处.
caching ×3
php ×3
post ×3
browser ×2
http ×2
javascript ×2
rest ×2
ajax ×1
ajax-request ×1
apache ×1
api ×1
c# ×1
docker ×1
header ×1
http-caching ×1
http-headers ×1
java ×1
jquery ×1
postman ×1
proxy ×1
request ×1
restful-url ×1
soap ×1
spring ×1
spring-mvc ×1
varnish ×1
web-services ×1