我正在调查google.com在firebug中的Net活动,因为我很好奇并注意到请求返回"204 No Content".
事实证明,204 No Content"主要是为了允许在不引起用户代理的活动文档视图更改的情况下进行操作的输入,尽管任何新的或更新的元信息应该应用于当前在用户代理的活动中的文档视图." 随你.
我查看了JS源代码,看到像这样请求"generate_204":
(new Image).src="http://clients1.google.com/generate_204"
Run Code Online (Sandbox Code Playgroud)
根本没有变量声明/赋值.
我的第一个想法是,它被用于跟踪Javascript是否已启用.但是,"(新图像).src ='...'"调用无论如何都是从动态加载的外部JS文件中调用的,因此这将毫无意义.
任何人都有任何关于这一点的想法?
UPDATE
"/ generate_204"似乎可以在许多谷歌服务/服务器上使用(例如,maps.google.com/generate_204,maps.gstatic.com/generate_204等...).
您可以通过为您的网络应用可能使用的每个Google拥有的服务预先获取generate_204页面来利用此功能.像这样:
window.onload = function(){
var two_o_fours = [
// google maps domain ...
"http://maps.google.com/generate_204",
// google maps images domains ...
"http://mt0.google.com/generate_204",
"http://mt1.google.com/generate_204",
"http://mt2.google.com/generate_204",
"http://mt3.google.com/generate_204",
// you can add your own 204 page for your subdomains too!
"http://sub.domain.com/generate_204"
];
for(var i = 0, l = two_o_fours.length; i < l; ++i){
(new Image).src = two_o_fours[i];
}
};
Run Code Online (Sandbox Code Playgroud) 缓存控制标头"no-cache,must-revalidate,private"允许浏览器缓存资源,但强制使用条件请求重新验证.这在FF,Safari和Chrome中可以正常使用.
但是,IE7 + 8不发送条件请求,即请求头中缺少"If-Modified-Since",因此服务器使用HTTP/200而不是HTTP/304进行响应.
以下是完整的服务器响应标头:
Last-Modified: Wed, 16 Feb 2011 13:52:26 GMT
Content-type: text/html;charset=utf-8
Content-Length: 10835
Date: Wed, 16 Feb 2011 13:52:26 GMT
Connection: keep-alive
Cache-Control: no-cache, must-revalidate, private
Run Code Online (Sandbox Code Playgroud)
这似乎是一个IE错误,但我没有在网上找到任何相关内容,所以我想知道是否可能缺少或存在另一个标头会让IE表现得很奇怪?
讨论no-cache和max-age 之间的区别:Cache-Control:max-age = 0和no-cache之间有什么区别?
当浏览器的Accept请求标头显示如下内容时:
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Run Code Online (Sandbox Code Playgroud)
这是否意味着application/xml,application/xhtml+xml和text/html所有有质量PARAM 0.9?
或者它是否意味着application/xml并application/xhtml+xml具有默认(q=1)并text/html具有q=0.9参数?
我假设前者,但希望有人知道更明确.
Firefox有"modifyheaders"插件.Google Chrome有什么类似的吗?
我正在尝试在Symfony 2中实现自定义身份验证提供程序.我正在使用Fiddler发送测试请求并打印所有标头服务器端; 好吧,Authorization标题丢失了.
难道我做错了什么?
GET /RESTfulBackend/web/index.php HTTP/1.1
Authorization: FID 44CF9590006BF252F707:jZNOcbfWmD/
Host: localhost
User-Agent: Fiddler
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3
Run Code Online (Sandbox Code Playgroud)
Listener只打印标题并退出:
class HMACListener implements ListenerInterface
{
private $securityContext;
private $authenticationManager;
public function handle(GetResponseEvent $event)
{
$request = $event->getRequest();
print_r($request->headers->all());
die();
}
}
Run Code Online (Sandbox Code Playgroud)
响应缺少Authorization标题:
Array
(
[host] => Array
(
[0] => localhost
)
[user-agent] => Array
(
[0] => Fiddler
)
[accept] => Array
(
[0] => text/html,application/xhtml+xml,application/xml
)
[accept-language] => Array
(
[0] => it-it,it;q=0.8,en-us;q=0.5,en;q=0.3 …Run Code Online (Sandbox Code Playgroud) 我知道在PHP中,它发送X-Powered-By标头以获得PHP版本.
我也知道通过附加一些校验和,你可以访问PHP的学分和一些随机图像(这里有更多信息).
我也知道在php.ini你可以转expose_php = off.
但这是我在一些网站上所做的事情,这是有用的
header('X-Powered-By: Alex');
Run Code Online (Sandbox Code Playgroud)
当我查看标题时,我可以看到它现在是'Alex'而不是PHP版本.我的问题是,这将首先发送先前的PHP标头(在它到达我之前header(),是否可由任何嗅探器程序检测到?或者是由PHP收集的标题,然后再发送回浏览器?
顺便说一句,这不是为了安全性,只是好奇如何在PHP中使用标头.
如果出现问题,我们正在使用HTTP状态代码作为响应代码开发标准REST服务.(例如,无效的用户输入会向客户端返回"400 Bad Request")
但是,我们认为更详细的错误消息对客户端有用.(例如,无效输入错误是由于X是无法识别的参数名称)
我们希望尽可能忠实于HTTP规范,因此在研究了RFC2616中的规范之后,我们考虑将详细的错误消息放在HTTP标头中,特别是在HTTP标头警告字段中.它在RFC上说:
Warning general-header字段用于携带有关消息的状态或转换的其他信息,这些信息可能未反映在消息中.此信息通常用于警告可能缺少来自缓存操作或应用于消息实体主体的转换的语义透明性.
对于其他警告(例如REST错误消息)使用此标头似乎没有任何限制,即使是根据此标头的初始意图与缓存警告无关的警告也是如此.我们喜欢语义,我们计划使用299警告代码,这似乎非常适合该法案:
299其他持久警告警告文本可能包含要呈现给人类用户或记录的任意信息.接收此警告的系统不得采取任何自动操作.
因此,鉴于此问题顶部显示的无效输入错误情况,我们正在考虑将REST错误消息添加如下示例:
HTTP/1.1 400 Bad Request
Warning: 299 ServiceName "Invalid input error: X is unrecognized parameter name."
Run Code Online (Sandbox Code Playgroud)
这是一个好主意/实践吗?我们还发现一些服务在X-Warning标题中详述了此消息,但这似乎不是标准的.我们想知道stackoverflow REST人群的蜂巢智慧会对此有何看法.在REST响应中传递详细的错误消息传递是否还有更好/标准化的做法?
我继承了一些最终将成为API调用一部分的代码.根据现有代码,调用是一个用access_token检索JSON代码的帖子.虽然这通常很简单,并且像其他每个API一样,但此代码要求客户端密钥有一个自定义的httpheader字段.
我能够使用URLRequest等在Objective C中完成这项工作,但是现在我正在创建一个Web组件的调用,我已被拦截了.
我正在使用一个非常标准的jquery帖子
$.post('https://url.com',
{access_token:'XXXXXXXXXXXXXXXXXXX',
function(data){
console.info(data);
}, 'json');
Run Code Online (Sandbox Code Playgroud)
在标头中使用HTTP-EQUIV.但该帖子从不检索数据,服务器本身也没有识别出任何调用(即使是不完整的调用).
我可能不得不废弃此代码并重新开始,但如果有人之前遇到此问题,请提供任何见解.
我似乎找不到任何方法在JavaFX中使用WebEngine/WebView以编程方式设置cookie .API没有给出任何关于如何获得类似HttpRequest的对象来修改标题(这是我在XML-RPC中使用的应用程序)或任何类型的cookie管理器的想法.
这个页面上的任何问题似乎都没有触及这个问题 - 有这个,但它只是在applet中修复bug时禁用cookie ,我的应用程序在桌面上btw.
我想象的唯一方法是通过请求第一页(需要带有sessionID的cookie才能正确加载),获取"拒绝访问"风格的消息,在页面上下文中执行一些javascript来设置cookie和然后刷新.这个解决方案虽然是一个糟糕的用户体验.
如何使用WebEngine设置cookie?
更新:从上面链接的问题中找到线索,我尝试了解使用CookieManager和相关API的一些示例.我找到了这个代码,然后我尝试将其合并到我的应用程序中,结果很奇怪;
MyCookieStore cookie_store = new MyCookieStore();
CookieManager cookie_manager = new CookieManager(cookie_store, new MyCookiePolicy());
CookieHandler.setDefault(cookie_manager);
WebView wv = new WebView();
Run Code Online (Sandbox Code Playgroud)
现在让我们说这样做:
String url = "http://www.google.com/";
wv.getEngine.go(url);
Run Code Online (Sandbox Code Playgroud)
在发出此请求后在Eclipse中进行调试显示cookie存储映射包含cookie:
{http://www.google.com/=[NID=67=XWOQNK5VeRGEIEovNQhKsQZ5-laDaFXkzHci_uEI_UrFFkq_1d6kC-4Xg7SLSB8ZZVDjTUqJC_ot8vaVfX4ZllJ2SHEYaPnXmbq8NZVotgoQ372eU8NCIa_7X7uGl8GS, PREF=ID=6505d5000db18c8c:FF=0:TM=1358526181:LM=1358526181:S=Nzb5yzBzXiKPLk48]}
Run Code Online (Sandbox Code Playgroud)
WebEngine只使用底层注册的cookie引擎!但等等,真的吗?让我们在发出请求之前尝试添加cookie ...
cookie_store.add(new URL(url).toURI(), new HttpCookie("testCookieKey", "testCookieValue"));
Run Code Online (Sandbox Code Playgroud)
然后我看看Wireshark中的请求......
GET / HTTP/1.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/535.14 (KHTML, like Gecko) JavaFX/2.2 Safari/535.14 …Run Code Online (Sandbox Code Playgroud) 在HTML页面上,在单击图像("img")或锚点("a")标记的链接时,我想为GET请求添加自定义标头.这些链接通常用于下载动态内容.这些标头可以是SAML标头或自定义应用程序特定标头.
是否可以通过JavaScript添加这些自定义标头?或者,如果我通过XMLHttpRequest添加这些,我如何实现下载功能?
此要求仅适用于IE6或7.
http-headers ×10
http ×3
javascript ×2
php ×2
cookies ×1
fiddler ×1
header ×1
httprequest ×1
javafx ×1
javafx-2 ×1
jquery ×1
json ×1
mime-types ×1
post ×1
response ×1
rest ×1
symfony ×1