我在使用网址格式时遇到问题。
网址格式如下:
/API#access_token=<string>&expires_in=<timestamp>
不幸的是,我无法更改#access_token =&amp; expires_in =部分,因为这超出了我的控制范围,我只需要让我的代码工作。
我尝试了许多不同的模式,其中一些模式如下所述。这是我的第一个Django项目,任何建议和指针都会非常感激。
url(r'^API#access_token=(?P<token_info>\w+)&expires_in(?P<time>\d+)$'
url(r'^API#(?P<tokens>\w+)$'
url(r'^API/#(?P<tokens>\w+)&(?P<expiration>\d+)$'
答案 0 :(得分:5)
问题是,锚#
(也称为片段标识符)不会被浏览器发送到服务器。正则表达式无法捕捉不存在的东西。来自wikipedia article on the fragment identifier:
片段标识符的功能与其余部分不同 URI:即,它的处理完全是客户端,没有 来自Web服务器的参与 - 当然通常是服务器 有助于确定MIME类型,MIME类型决定了 处理碎片。当代理(例如Web浏览器) 从Web服务器请求Web资源,代理将URI发送到 服务器,但不发送片段。相反,代理等待 为服务器发送资源,然后代理处理 资源根据文档类型和片段值。
解决这个问题的唯一方法是在客户端的JavaScript中解析片段,并将其作为单独的异步请求发送。对于GET请求,您可以将片段作为查询参数发送(在剥离散列之后)或将其作为自定义值放入标题中。