Javascript Opera post(GET)是URL的哈希片段

Javascript Opera post(GET)是URL的哈希片段,javascript,apache,opera,Javascript,Apache,Opera,根据Apache访问日志中的这一行,Opera似乎有时会在发送到服务器的URI中包含哈希片段: [26/Apr/2011:01:09:03+0200]“GET/dagbok/#type=food HTTP/1.1“500-”-“Opera/9.80(Windows NT 6.1;U;nb)Presto/2.8.131版本/11.10” 有没有关于它为什么这样做的经验或见解 URI应该被jQuery的hash change事件捕获,该事件反过来会触发URI上的.load()/dagbok/food

根据Apache访问日志中的这一行,Opera似乎有时会在发送到服务器的URI中包含哈希片段:

[26/Apr/2011:01:09:03+0200]“GET/dagbok/#type=food HTTP/1.1“500-”-“Opera/9.80(Windows NT 6.1;U;nb)Presto/2.8.131版本/11.10”

有没有关于它为什么这样做的经验或见解

URI应该被jQuery的hash change事件捕获,该事件反过来会触发URI上的.load()
/dagbok/food/

PS!之所以出现
500内部服务器
,是因为路由不理解包含哈希片段的URI。也不应该

使用重写规则更新:

重新启动发动机
重写cond%{REQUEST_FILENAME}-d
重写cond%{REQUEST_FILENAME}-f
重写规则!。(js | ico | txt | gif | jpg | png | css)$index.php


php然后启动Zends前端控制器/路由器,该控制器/路由器无法找到此URI的任何路由。这是正确的,因为这个URI永远不会到达服务器。

我猜jQuery在发送XMLHttpRequest之前不会从URL中删除#hash部分,而是依赖浏览器来完成。快速测试表明Opera没有。(这可能应该被视为Opera中的一个bug-我不认为有任何标准涵盖这一点,但它没有像大多数其他人可能做的那样。)

你在Opera的哪个版本中看到了这一点?你能发布一些关于服务器的详细信息吗,日志看起来很奇怪,因为服务器应该忽略该片段。你使用了一些重写规则吗?@Roatin Marth,日志上说是Opera 11.10。在11.01中也看到了它,但没有人再使用它。@Dr.Molle使用一个基本的
重写规则运行,它将“一切”发送到index.php,Zends前端控制器/路由器在那里解析请求URI。在那里,它很难失败,因为它找不到此URI的路由。在原始问题中添加了重写规则。看看这些链接,它们之间有什么区别吗?[1] :[2]:状态栏上显示的url是相同的,但第一个url包含%23,而不是“#”,实际上描述了片段在点
3.5中的行为。Fragment
声明:因此,在特定于方案的URI处理中不使用片段标识符;相反,在取消引用之前,片段标识符与URI的其余部分分离,因此,无论URI方案如何,片段本身中的标识信息都仅由用户代理取消引用。您是否能够重现该行为?是,我可以确认这是一个已知的bug,可能会在Opera的下一个版本更新中得到解决。(如果有一个非常小的版本,例如11.11安全问题或其他问题,修复程序可能不会进入,但它正在进行中。)