尝试将ExpiresDefault ExpiresByType添加到我的网站上的内容,以便缓存它.我在Javascript,CSS和图像的URL(路径中的修订号)中使用cachebusting,这样我就可以将这些mimetypes设置为永久.我在apache httpd中设置了以下规则:
ExpiresActive On
ExpiresDefault "access plus 1 minutes"
ExpiresByType image/gif "access plus 10 years"
ExpiresByType image/png "access plus 10 years"
ExpiresByType image/jpeg "access plus 10 years"
ExpiresByType image/jpg "access plus 10 years"
ExpiresByType text/javascript "access plus 10 years"
ExpiresByType text/css "access plus 10 years"
Run Code Online (Sandbox Code Playgroud)
然后,当我访问我的网站http://karmerd.com并使用httplive标题来查看标题时,我得到了我认为应该是正确的exps for css:Expires:Sun,03 Feb 2019 17:52:48 GMT
但我使用雅虎的Yslow firebug扩展,它仍然给我一个不使用Expires的F!难道我做错了什么?我也在我的网站上使用gravatars,但他们有Expires设置.好像一切都过期了.是Yslow还是我?
假设您在旧代码库上运行的旧网站提供某些功能.后继网站已启动并运行,提供所有旧功能和更多功能.有一段时间,旧网站上有一个指向新网站的HTML链接,供那些关心点击的用户使用.
现在,旧网站已达到使用寿命,您希望自动将用户重定向到新网站,例如通过301或302重定向.但是,当用户遇到此重定向时,您还希望在新站点上显示友好消息,欢迎他们并解释他们为什么没有看到旧版本.
当用户单击HTML链接时,将填充HTTP_REFERER标头,并且可以通过该值触发欢迎消息.但是,使用3XX重定向代码时似乎不是这样.
针对此问题的Google热门话题有:"HTTP 1.1规范明确说明:如果给出了3XX代码,则不会传递任何Referer值.(最终,指向3XX站点的URL)." (http://www.usenet-forums.com/apache-web-server/37811-how-set-referer-redirect.html#post145986)
但是我在快速阅读规范(http://tools.ietf.org/html/rfc2616)中找不到这个陈述.
任何人都可以建议实现此功能的正确方法吗?
注意:这并不是一个包罗万象的解决方案.我们知道有些客户端甚至不会出于隐私原因发送HTTP_REFERER标头,但为了争论,让我们忽略该用例.
我正在查看Firefox的livehttpheaders插件,并决定测试我的登录页面.我注意到它里面显示的参数包含我的登录名和密码.例如:
username=sarmenhb&password=thepassword&submit=Login
Run Code Online (Sandbox Code Playgroud)
用简单的英语.
我没有在其他网站上看到这个.
我能做错什么?我认为这是一个安全漏洞.登录页面,只需验证并登录用户即可.所有字段都经过mysql_real_escape_string(如果相关).
今天我用YSlow检查了我网站的性能统计数据.我收到了警告(或可能是错误),如下所示
Add Expires headers
There are 15 static components without a far-future expiration date.
* (no expires) http://www.example.com/video/css/global.css
* (no expires) http://www.example.com/video/js/global.js
* (no expires) http://www.example.com/video/images/main-bg.png
Run Code Online (Sandbox Code Playgroud)
这意味着什么以及如何在PHP和ASP.NET中实现这一点.我在共享托管服务器上,所以请告诉我一些使用代码执行此操作的方法,因为我无法在服务器端进行任何修改.
如果我将使标题过期,那么有可能如果我在CSS中进行更改,那么用户将无法立即获取它们,因为css和其他文件被缓存一段时间限制(1个月,一周).是吗?
使用expire头是否有任何缺点?
我觉得这个问题很愚蠢,但我已经和它摔跤了好几个小时,我不知道还有什么地方可以转.
我有一个flash表单,它正在向php脚本发出POST请求,然后显示所述脚本的输出.为简单起见,我们假设这是php脚本:
echo 'Mail sent to: ' . $_POST['recipientEmail'];
Run Code Online (Sandbox Code Playgroud)
当我提交表单时,我在POST请求行中的Firebug的网络选项卡中看到了这一点:
Referer: http://example.com/my.swf
Content-type: text/html
Content-length: 68
recipientEmail=example@example.com
Run Code Online (Sandbox Code Playgroud)
表面上一切都很好.帖子已经发布,它将正确的变量发送到脚本.但是当响应回来时,这就是我在Flash跟踪器中看到的:
Mail sent to:
Run Code Online (Sandbox Code Playgroud)
换句话说,$ _POST ['recipientEmail']在请求退出浏览器后丢失了.
你觉得这里发生了什么?脚本和swf文件都在同一个域中,服务器相同.
编辑:我刚尝试从HTML表单中访问相同的脚本,它捕获$ _POST标头.所以它只是在它被Flash发送时才捕获它.Firebug中的post标签看起来与flash有点不同:
recipientEmail example@example.com
submit Submit
Run Code Online (Sandbox Code Playgroud)
请注意,每个变量都在自己的行中.
编辑:这是提交提交的相关AS3代码:
var _gateway:String = Share.getGateway();
var request:URLRequest;
var variables:URLVariables = new URLVariables();
var loader:URLLoader = new URLLoader();
request = new URLRequest(_gateway);
request.contentType = 'text/html';
request.method = URLRequestMethod.POST;
variables.senderName = senderName.text;
variables.recipientEmail = recipientEmail.text;
variables.senderMessage = senderMessage.text;
request.data = variables;
try {
loader.load(request);
}catch (error:Error) {
Debug.trace("Unable to load …Run Code Online (Sandbox Code Playgroud) >>> import httplib
>>> conn = httplib.HTTPConnection("www.google.com")
>>> conn.request("HEAD", "/index.html")
>>> res = conn.getresponse()
>>> print res.status, res.reason
200 OK
Run Code Online (Sandbox Code Playgroud)
此代码将获取HTTP状态代码.但请注意,我在2行上拆分了"google.com"和"/index.html".
而且令人困惑.
如果我想找到一般URL的状态代码怎么办?
http://mydomain.com/sunny/boo.avi
http://anotherdomain.com/podcast.mp3
http://anotherdomain.com/rss/fee.xml
Run Code Online (Sandbox Code Playgroud)
我不能只是将URL粘贴到它,并让它工作?
编辑...我不能使用urllib,因为我不想下载文件
我在PHP脚本中有以下代码:
<?php
if (!in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', '::1')))
{
die('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
}
// Other statements follow here
echo 'Hello there ...'
Run Code Online (Sandbox Code Playgroud)
而不是回显消息,我想将用户重定向到404页面.但是,当我用这个替换die()语句时:
header("HTTP/1.0 404 Not Found");
从远程计算机运行脚本的用户可以看到消息"Hello there ..."
如何让页面重定向到404页面以获取脚本的非localhost请求?
顺便说一句,这段代码来自Symfony框架中的开环环境前端控制器.
我有一个PHP脚本生成的XML提要,运行mod_rewrite.IE打开提要确定但我无法将文件保存到磁盘或导入到Excel.
我试图在网址中访问的文件类似于:
http://domain.com/download/export.xml
Run Code Online (Sandbox Code Playgroud)
这将写入下载PHP脚本,实际上不是XML文件.
设置如下所示的标题后,仍然无法让IE保存文件.此外,由于它无法显示普通源,因此IE会对XML进行各种样式更改,因此无法复制并粘贴到记事本中.
<?php
header("Content-type: text/xml");
header('Content-Disposition: attachment; filename="QuoteExport_'.$quoteDate.'_'.$quoteSlot.'.xml"');
Run Code Online (Sandbox Code Playgroud)
有谁知道解决方案?谢谢.
编辑:感谢您的帮助到目前为止.我尝试了这些标题的组合,仍然没有得到我想要的结果.无论我设置什么,IE总是在浏览器中在线显示,无法下载.保存功能也仍然无法正常工作.任何其他想法如何强制IE使用标头将XML保存为文件?
编辑2:状态现在是IE提供打开/保存的选项,但在尝试保存时,有一个弹出窗口说它"无法打开这个网站.".但与此同时,open选项显示内容没有问题.
你能解释一下http header和https header之间的区别.我需要非常简短的解释.我们将使用http/https标题做什么?
谢谢
我是编码世界的新手,也是PHP和XHTML的新手.我只是详细介绍了meta标签,并且不了解属性http-equiv,也不了解charset的用途以及UTF-8所指的值<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />.