【问题标题】:Unexpected behaviour on bookmarklet submit or related database action小书签提交或相关数据库操作的意外行为
【发布时间】:2010-06-29 21:15:26
【问题描述】:

[更新如下]

我在 apache 上使用带有一些 javascript 书签功能的 mod_wsgi 部署站点时遇到了一点问题。问题是小书签(这是一个浏览器菜单按钮)提交到类似的页面

http://stemhub.org/submit/http://the-users-link.com/here

然后返回一个表单来保存有关链接的元数据。视图函数(flask/werkzeug 应用程序)检查数据库以查看是否已添加链接,然后返回带有预先存在或新分配的链接 id 的表单,我想这可能会触发某种时间问题.非常奇怪的是,当我第一次提交链接时,我得到了带有“未找到”apache 错误的http://stemhub.org/submit/http://the-users-link.com/here 页面,但是如果我随后重新加载页面,我会得到预期的表单。错误日志包含有关线程异常的消息,但当站点按预期运行时,它们也会包含这些消息。

在另一个端口上并行部署了应用程序 - stemhub.org:5000 - 在 Tornado 上运行并且工作正常,以及本地开发版本。

这里是小书签,如果它们是问题所在:

工作端口 5000 版本:

javascript:(function(){window.open('http://stemhub.org:5000/submit/'+encodeURIComponent(window.location.href),'height=200,width=150')}())

问题端口 80 版本:

javascript:(function(){window.open('http://stemhub.org/submit/'+encodeURIComponent(window.location.href),'height=200,width=150')}())

更新:由于某种原因属于另一个标签,将 javascript 方法 encodeURIComponent 更改为 encodeURI 可以使一切按预期工作,至少在 Firefox 和 Chrome 中是这样。不过,将来会采纳 Graham Dumpleton 的建议,做一些更明智的事情。

【问题讨论】:

    标签: javascript apache deployment mod-wsgi bookmarklet


    【解决方案1】:

    无论您的问题是什么,您在 URL 中放置第二个 URL 的方式都不适用于 Apache。这是因为 Apache 会将重复的斜杠折叠成一个斜杠,然后这个斜杠就是 Apache 托管的应用程序在 PATH_INFO 中看到的全部内容。

    换句话说,这不是 mod_wsgi 问题,如果将其他动态 Web 应用程序托管机制与 Apache 结合使用,即使是非 Python 机制也可能发生。

    顺便说一句,有些人可能会指出未修改的 URL 在 REQUEST_URI 中,但依赖它不一定是一个好主意,因为要弄清楚如何将其拆分并将其映射到 SCRIPT_NAME 和 PATH_INFO 可能并不总是直截了当,具体取决于关于Apache中是否使用重写规则。

    建议您改为调查作为查询字符串一部分的第二个 URL,而不是 URL 路径。

    【讨论】:

      猜你喜欢
      • 2016-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-22
      相关资源
      最近更新 更多