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

And*_*eth 5 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的哈希更改事件捕获,而事件又会触发URI上的.load()/dagbok/food/.

PS!500 Internal Server发生这种情况是因为路由不理解带有哈希片段的URI.也不应该.

使用RewriteRules更新:

RewriteEng在
RewriteCond%{REQUEST_FILENAME}!-d
RewriteCond%{REQUEST_FILENAME}!-f
RewriteRule!.(js | ico | txt | gif | jpg | png | css)$ index.php

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

hal*_*ors 0

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