在做了一些处理之后,我想为用户输入设置一个cookie值,然后将它们重定向到一个新页面.但是,cookie没有设置.如果我注释掉重定向,则cookie已成功设置.我认为这是某种类型的标题问题.这种情况的最佳解决方法是什么?
if($form_submitted) {
...
setcookie('type_id', $new_type_id, time() + 60*60*24*30);
header("Location: $url");
exit;
}
Run Code Online (Sandbox Code Playgroud)
请注意,setcookie true在任何一种情况下都会返回,我没有收到任何错误/警告/通知.
编辑:我使用的是Unix/Apache/MySQL/PHP
的Cache-ControlHTTP/1.1头部可以指定最大年龄以及所述高速缓存的内容是否可以是公共或私有的,指示中间高速缓存是否能够高速缓存的内容.
例如,Ruby on Rails expires_in()默认使用Cache-Control: private
将其公开的风险是什么?如果它是公共的,哪些额外的地方可以缓存内容 - 例如它是代理服务器吗?
如果网站像Amazon.com,但用户是匿名的,那么可能没有太多的隐私问题怎么办?如果用户登录,可能会出现隐私问题,因为数据通过位置并且数据可见.如果那个位置想要"坏",那么Cache-Control: private无论如何它真的不需要关心.
如果它是一个用户可以登录的网站,但网站只搜索鱼油和维生素等健康产品,等等.在这种情况下,涉及的隐私更少,因为它与Amazon.com不同,在那里有更多种类的产品,例如用户可以真正关心隐私问题的书籍.
话虽如此,有什么额外的优势Cache-Control: public?
我正在开发一个必须将excel文件导入MySQL的PHP应用程序.所以我需要将excel文件转换为.csv格式.但是当我想要使用它的类型时$_FILE['something']['type'],我会得到application/octet-stream它的mime类型;
我觉得这里有问题.因为我将下面的列表收集为.csv文件mime-type:
text/comma-separated-values,
text/csv,
application/csv,
application/excel,
application/vnd.ms-excel,
application/vnd.msexcel
Run Code Online (Sandbox Code Playgroud)
怎么了 ?
是否可以使用PHP获取当前请求的http标头?我不是使用Apache作为Web服务器,而是使用nginx.
我尝试过使用,getallheaders()但我得到了Call to undefined function getallheaders().
我有一个使用Forms Authentication在asp.net mvc中编写的后端服务器.未对用户进行身份验证时,服务器将自动将302重定向发送到"登录"操作并返回"登录"页面.
在客户端,我有一个项目列表.此列表仅供经过身份验证的用户访问.在页面上,我有一个使用Ajax刷新列表的按钮(jQuery的$ .ajax函数).
现在,问题是当身份验证票超时并且用户单击"刷新"按钮时:
我想是当身份验证票证超时和用户点击刷新按钮,我应该能够检测并显示一条消息,询问用户登录.
我尝试通过在Login操作中添加自定义标头(IS_LOGIN)来解决此问题,并在我的ajax响应中检查它.但这不是一个好的解决方案.
所以我的问题是:
谢谢你的回复.
返回图像资源时返回301/302/303代码是否可以?我过去做过这个,似乎有效.这是一种很好的做法,是否与大多数浏览器兼容?
如何在php中显示使用file_get_contents检索的图像?
我需要修改标题,只是回应它或什么?
谢谢!
google page speed addon告诉我:
The following publicly cacheable, compressible resources should have a "Vary: Accept-Encoding" header:
//some .js and .css files
Run Code Online (Sandbox Code Playgroud)
我不明白这意味着什么.我已经像这样压缩了这些文件:
if (encodings.Contains("gzip") || encodings == "*")
{
app.Response.Filter = new GZipStream(baseStream, CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "gzip");
}
Run Code Online (Sandbox Code Playgroud)
这一切似乎都有效.为什么有Vary: Accept-Encoding必要?
我将这些标头由服务器发送到客户端:
Cache-Control:private
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html
Date:Sun, 27 Nov 2011 11:10:38 GMT
ETag:"12341234"
Set-Cookie:connect.sid=e1u...7o; path=/; expires=Sun, 27 Nov 2011 11:40:38 GMT; httpOnly
Transfer-Encoding:chunked
last-modified:Sat, 26 Nov 2011 21:42:45 GMT
Run Code Online (Sandbox Code Playgroud)
我希望客户端验证文件在服务器上没有更改,如果否则为"304",则发送"200".
Firefox发送:
if-modified-since: Sat, 26 Nov 2011 21:42:45 GMT
if-none-match: "12341234"
Run Code Online (Sandbox Code Playgroud)
为什么Chrome不会在刷新页面时发送相同内容?我正在追踪.Net运行的行为:
context.Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate)
Run Code Online (Sandbox Code Playgroud) 我有一个角度应用程序正在命中节点API.我们的后端开发人员已经在API上实现了基本身份验证,我需要在请求中发送auth标头.
我跟踪了:
$http.defaults.headers.common['Authorization'] = 'Basic ' + login + ':' + password);
Run Code Online (Sandbox Code Playgroud)
我试过了:
.config(['$http', function($http) {
$http.defaults.headers.common['Authorization'] = 'Basic ' + login + ':' + password);
}])
Run Code Online (Sandbox Code Playgroud)
以及将其直接附加到请求:
$http({method: 'GET', url: url, headers: {'Authorization': 'Basic auth'}})})
Run Code Online (Sandbox Code Playgroud)
但没有任何作用.怎么解决这个?
http-headers ×10
php ×4
http ×2
ajax ×1
angularjs ×1
asp.net ×1
asp.net-mvc ×1
c# ×1
cookies ×1
csv ×1
file-format ×1
image ×1
javascript ×1
jquery ×1
mime-types ×1
nginx ×1
node.js ×1
redirect ×1