JS 根据来路域名跳转不同网址问题

2017-06-18 02:13:40 +08:00
 lancn
想用 js 实现根据不同来路域名( 2 个)跳转到不同网址
通过 123.comwww.123.com 的来路跳转到 111.com
通过 456.comwww.456.com 的来路跳转到 222.com
楼主美工,代码不太懂,不知道该怎样搞,求大神指点,万分感谢!
9578 次点击
所在节点    程序员
52 条回复
autoxbc
2017-06-18 06:42:21 +08:00
crayygy
2017-06-18 07:58:02 +08:00
CNAME ? 不需要通过 js 吧
Zohar
2017-06-18 08:27:40 +08:00
@crayygy CNAME 只是 DNS 记录的一种类型,和跳转没有必然联系。
lilifenghao44
2017-06-18 09:05:07 +08:00
@Zohar 他说的应该是 CNAME 会携带 servername,然后可以在 httpd 里面 vhost 分 servername (网址)
pantingwen
2017-06-18 09:13:53 +08:00
根基 js 里面的 document.referrer 来判断啊!
var referrer=document.referrer;
if(referrer.indexOf('www.123.com')){
window.location.href='111.com '
};
beyoung
2017-06-18 09:20:06 +08:00
这种事情还是应该交给 Nginx、Apache 来处理吧
Zohar
2017-06-18 09:37:36 +08:00
@lilifenghao44 Request Header 中是否包括 Host 信息,取决于浏览器发送的请求,与是否使用 CNAME 记录无关。

反过来说,无论是 A 记录, AAAA 记录, CNAME 记录还是其他类型记录,只要能正确的解析到服务器 IP,并且服务端 Web Server 能判断 Host 后进行跳转,都能够达到目的,并不依赖于 CNAME 记录。
xmadi
2017-06-18 10:48:39 +08:00
http 请求头部里 referer 字段来判断请求来源 这个属性是浏览器强制加而且不可更改的
yhxx
2017-06-18 11:01:38 +08:00
用 refer 的话 http 和 https 互跳会出问题
aprikyblue
2017-06-18 11:33:14 +08:00
上面说 CNAME 的,我认为你们需要重新粗略了解一下完成一个对网站的 HTTP 请求的流程
470326964
2017-06-18 11:52:13 +08:00
nginx 跳转一下不就好了
GoBeyond
2017-06-18 12:01:42 +08:00
看一下 window.location 然后再重新赋值给 window.location 就可以了吧。但是来讲这样的任务往往都是后端干的
qiayue
2017-06-18 12:44:19 +08:00
来路域名一般指的是 referer。
比如你在本页面点击打开 weibo.com,那么你此次微博的来路域名就是 www.v2ex.com
楼主的需求是,从不同的网站(一般都是别人的网站)点击打开同一 URL,能够跳转到不同的 URL。
楼上说 nginx cname 的都是什么鬼。
一楼已经给出解决方案了。
Chaidu
2017-06-18 15:04:02 +08:00
```javascript
var referring = document.referrer;
if (referring) {
if (referring.indexOf('123.com') !== -1) {
window.location.replace('http://111.com/');
} else if (referring.indexOf('456.com') !== -1) {
window.location.replace('http://222.com/');
}
}
```
Chaidu
2017-06-18 15:08:45 +08:00
不支持 Markdown 语法?
https://imgur.com/a/Y15Cu
Chaidu
2017-06-18 15:23:47 +08:00
autoxbc
2017-06-18 16:12:12 +08:00
@Chaidu 可以用 gist,看本站说明
https://www.v2ex.com/t/1244

另对 url 字符串用 indexOf 匹配域名是不可靠的,比如 'http://somesite.com?str=123.com',甚至用正则也不推荐,很多跨站漏洞都是这么产生的。
Chaidu
2017-06-18 17:09:30 +08:00
@autoxbc
首先,感谢提示。但是,你说的这些谁都懂。
我写这些代码之前已经把所有的问题都考虑到了。
题主需要用 javascript 代码解决一个问题,而我的代码使题主完美的达到了目的,解决了问题。
所有不结合问题本身的质疑都是耍流氓。如果新闻报道了某地发生了一起抢劫事件,然后全世界的每个人出门都要请保镖跟随吗?我感觉实在是可笑!
EXDestroyer
2017-06-18 19:25:06 +08:00
@Chaidu 不对吧,你的代码确实是存在楼上所说的是漏洞(或者说是 bug )的,如果采用你这个方法需求逻辑会有问题的...
lslqtz
2017-06-18 22:15:00 +08:00
javascript switch.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/369234

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX