相关疑难解决方法(0)

使用NodeJS和Restify重定向客户端

我正在为使用NodeJS,Restify和PassportJS进行身份验证的SPA构建REST后端.除了最后一步之外,一切都正常工作,即将客户端从后端/ login/facebook/callback重定向到应用程序的主页.

我在网上搜索过,发现了很多ExpressJS的答案,但对Node-Restify没什么用处.我已经设法获取了一些代码片段,这就是我现在正在尝试的内容:

app.get('/api/v1/login/facebook/cb', passport.authenticate('facebook', { scope: 'email' }), function(req, res) {
    req.session.user = req.user._id;
    res.header('Location', '/#/home');
    res.send();
});
Run Code Online (Sandbox Code Playgroud)

发送响应但不包括位置标题,并向客户端显示白屏.如何使用Node-Restify API进行正确的重定向?

node.js restify passport.js

14
推荐指数
2
解决办法
1万
查看次数

为什么URI编码('#')锚点会导致404,以及如何在JS中处理它?

prettyPhoto使用主题标签,但如果它们被编码(到%23),大多数浏览器都会出现404错误.这之前已经讨论:

您收到404错误,因为#callback部分不是URL的一部分.它是浏览器使用的书签,它从未在请求​​中发送到服务器.如果对哈希进行编码,则它将成为文件名的一部分.

  1. 为什么哈希会成为文件的一部分,因为它是由URI编码的?这不是一个bug吗?

  2. 我问,因为prettyPhoto使用主题标签并遇到同样的问题.我想加一个'?' 在哈希是最优雅的解决方案之前,我只是有点不知道如何在现有代码中做到这一点:

    function getHashtag(){
    url=location.href;
    hashtag=url.indexOf('#gallery')!==-1)?decodeURI(url.substring(url.indexOf('#gallery')+1,url.length)):false;
    return hashtag;
    }
    function setHashtag(){
    if(typeof theRel=='undefined')return; location.hash=theRel+'/'+rel_index+'/';
    }
    function clearHashtag(){
    if(location.href.indexOf('#gallery')!==-1)location.hash="";
    }
  3. 还有其他建议吗?我会考虑调整我的404页面,但这似乎更像是处理问题而不是阻止它.

谢谢!

编辑: 由于相机处理这些哈希的方式显然没有任何问题,我最终将这些规则添加到我的apache服务器:

RewriteRule ^(.*).shtml(%23|#)$ /$1.shtml [R=301,NE,L]
RewriteRule ^(.*).shtml([^g]+)gallery(.+)$ /$1.shtml#gallery$3 [R=301,NE,L]
Run Code Online (Sandbox Code Playgroud)

他们成功处理了%23引发问题的案例.

javascript hash webkit hashtag

8
推荐指数
1
解决办法
7963
查看次数

重定向到Node.js中的不同页面URL(不在快速或其他框架中)

我想将用户从一个页面重定向到Node.js中的另一个页面(plain node.js)

现实生活场景:注册成功后(example.com/sigup),注册成功后我想将用户重定向到登录页面(example.com/login).

if (signUpSuccessful(request, response)) {    
    // I want to redirect to "/login" using request / response parameters.
}
Run Code Online (Sandbox Code Playgroud)

node.js

8
推荐指数
1
解决办法
2万
查看次数

雅虎邮件撰写链接中的 URI 编码

我有链接生成网络应用程序。我想让用户可以轻松地使用 gmail、yahoo mail 等将他们创建的链接通过电子邮件发送给其他人。Yahoo mail 有一个特殊的怪癖,我需要一个解决方法。

如果您有雅虎邮件帐户,请点击以下链接:

http://compose.mail.yahoo.com/?body=http%3A%2F%2Flocalhost%3A8000%2Fpath%23anchor

请注意,yahoo 重定向到特定的邮件服务器(例如http://us.mc431.mail.yahoo.com/mc/compose)。这样做时,它会解码十六进制代码。其中之一,%23,是一个哈希符号,在查询字符串参数值中是不合法的。%23 之后的所有信息都会丢失。

我的所有链接都已损坏,并且仅使用另一个角色不是一个选择。

直接致电 us.mc431.yahoo.com 对我来说有效,但可能不适用于所有用户,具体取决于他们的位置。

我尝试设置 html=true|false,将 URL 放入 html 标记中。什么都不起作用。有人针对这个特殊的怪癖有可靠的解决方法吗?

注意:任何基于服务器的解决方法对我来说都是不可能的。这必须是雅虎和最终用户之间的链接。

谢谢

yahoo

5
推荐指数
1
解决办法
4028
查看次数

标签 统计

node.js ×2

hash ×1

hashtag ×1

javascript ×1

passport.js ×1

restify ×1

webkit ×1

yahoo ×1