Coder Social home page Coder Social logo

重定向变成内网的问题 about nps HOT 24 CLOSED

ehang-io avatar ehang-io commented on July 17, 2024
重定向变成内网的问题

from nps.

Comments (24)

cnlh avatar cnlh commented on July 17, 2024

可以说下是什么场景吗?我测试了下302重定向的可以的。
还是说重定向直接写的内网完整ip?
wx20181107-093643 2x

from nps.

xymiao avatar xymiao commented on July 17, 2024

用你的例子给你举例,
http://ehang.ehangopen.ourcauc.com/Original/eqi/6391.html
你看看你的404
都是你内网的地址,
这个我已经大概知道什么情况还没有找到解决方案.

from nps.

xymiao avatar xymiao commented on July 17, 2024

你打开你的项目, 随便找一个带有图片, 但是图片有不存在的页面, 只要404的都可以, 你就可以看到你的内网ip了.

from nps.

cnlh avatar cnlh commented on July 17, 2024

image
也就是请求的页面中如果带有内网其他站点的地址 就会直接返回而不解析的情况是么?

from nps.

cnlh avatar cnlh commented on July 17, 2024

现在我个人主要是基于api或者单站场景去写的,对于内网的website还是有一些问题,下个版本我会换一种方式重构一下。

from nps.

xymiao avatar xymiao commented on July 17, 2024

因为客户端在进行跳转的时候, 记录的是真是的ip地址和端口. 所以就导致了这个情况. 这样的话, 这个就真的只能自己电脑上用了. 而不能跨设备了. 我只要是刚刚开始看go语言, 完全是, 需要翻着文档看代码. 所以, 还没有找到方案处理,所以, 问你, 是不是你那也出现了这样的问题. 还有另一个问题, 你可以尝试看看, 就是如果客户端异常关闭的情况, 就是强制关闭, 再重新连接的时候, 有可能服务端卡死的情况.

from nps.

cnlh avatar cnlh commented on July 17, 2024

1.跨设备这个问题现在这个版本的确存在问题 因为实现方式与shadowsock等代理不同,也就导致了这个问题,之前我场景不会跨站点,然后就没发现,最近我看看能不能重构一下。
2.异常关闭这个我目前测试还没发现过,我再观察下。

from nps.

xymiao avatar xymiao commented on July 17, 2024

其实说白了, 就是内网的网站的问题. 只要是使用获取当前servername和port的 都会出现这样的情况, 因为client本身就是访问的内网的ip所以, 就一定会这样.

from nps.

cnlh avatar cnlh commented on July 17, 2024

你刚才提到的只能在自己电脑上用是什么情况?这个我貌似没懂啊
跨设备这个确实没办法,因为如果代理的是10.1.50.203,然而html里面写了这种
<img src="10.1.50.122/xxx">
确实没办法 如果是
<img src="/xxx">
这种是可以的

from nps.

xymiao avatar xymiao commented on July 17, 2024

因为会有内网的问题, 所以, 就只能自己电脑上做测试了, 而不能使用其他的终端了.

from nps.

xymiao avatar xymiao commented on July 17, 2024

我说的就是这个道理, 如果连接是绝对路径就不行, 相对路径就可以. 如果在页面上使用了类似php代码
'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 这种绝对路径就不行. OK, 我再找点Go的书瞅瞅.

from nps.

cnlh avatar cnlh commented on July 17, 2024

你说的这个问题啊,那我应该有办法解决,这两天我会做一下这方面的处理然后更新一下,你可以关注一下。谢谢反馈

from nps.

cnlh avatar cnlh commented on July 17, 2024

已经解决,你可以测一测。
例如,访问:server1.ourcauc.com,该页面里面有一个超链接为10.1.50.196:4000,将根据配置文件自动该将url替换为server2.ourcauc.com,以达到跨站也可访问的效果,但需要提前在配置文件中配置这些站点。

from nps.

xymiao avatar xymiao commented on July 17, 2024

你这样处理之后, 还是会有一个问题, 因为我这都是直接用的域名80端口, 这里你的port是用的内网端口, 还是会导致这个问题, 不过我已经看到你修改的代码。 我尝试修改一下。 看看能不能搞定。

from nps.

xymiao avatar xymiao commented on July 17, 2024

我看到了你的处理方案, 你的处理方案是, 把拿到的response数据进行了replace操作, 但是这样的话, 还是没有办法解决http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] 服务端的获取数据。 不过这样也算是解决了这个问题。 但是就有可能会导致另外的bug. 举例说, 真的有内容就是正好配置成你对应的ip:port 那这也会被相应的替换成对应的外网地址。

from nps.

cnlh avatar cnlh commented on July 17, 2024

http_host获取这个问题。。我能想到的最好的解决方案那就是,你在你运行客户端的机器上添加一条host 外网的域名 解析为内网的ip,然后在配置文件中,将对应内网机器ip改为外网域名,因为dns会优先解析本地host,这样子应该就可以了

from nps.

xymiao avatar xymiao commented on July 17, 2024

其实这个问题, 最主要是因为 server.go:176: &{302 Found 302 HTTP/1.1 1 1 做了302. 所以 才会导致这个问题, 我正在调整这个host。 调整好了, 我再看看能不能用

from nps.

xymiao avatar xymiao commented on July 17, 2024

所有的302 都会在header中写入一个Location的地址, 这个地址只要是对的, 就没有问题了。

from nps.

cnlh avatar cnlh commented on July 17, 2024

不太明白你的场景了……

from nps.

xymiao avatar xymiao commented on July 17, 2024

我已经找到解决方案了, 但是基本上需要重新构造你的server.go的代码了, 需要在server端, 保存client绑定的url地址, 这样, 就可以做到处理内部ip的问题。 和client端一一对应。

<?php header('content-type:text/html;charset=uft-8); //重定向页面 header('location:index.php'); ?>
我看你的项目是php的。 我说的场景类似这个功能。 你可以尝试一下,你现在的代码, 你就明白了,我这很多时候, 需要自动的跳转一些页面, 根据用户的当前状态, 进行自动的跳转页面。 所以会有时候, 用到302. 也就是重定向页面。 所以这个时候, 在重定向的时候, server.go里面173行代码的。 字节转换成resp的时候, 会多出来Location. 这个location就是页面要跳转的地址。 这个还是带有端口信息, 所以, 会出现url:(内网端口的情况)。
不过, 还是谢谢了, 你的更新过的代码给我了思路。

from nps.

xymiao avatar xymiao commented on July 17, 2024

问题解决了, 你的代码func replaceHost(resp []byte) []byte
这个代码有点问题。
这个应该是个bug.我是调试出来的, 对Go还不太熟悉。
数字转换成字符串, 应该是用 "strconv"
strconv.Itoa(v.Port)
你用的是
string(v.Port) 导致第一个replace就没有起作用, 第二个replace才起作用, 所以导致端口号, 没有去掉。
修改成strconv.Itoa(v.Port) 302的问题解决。

from nps.

cnlh avatar cnlh commented on July 17, 2024

哦哦。。这个我的锅,不小心把语言弄混了,尬,也没测试带端口的情况,不过这个确实有可能导致不应该替换的内容被替换,后面的代码我加了替换与否的开关,看个人需求吧。

from nps.

xymiao avatar xymiao commented on July 17, 2024

语法的问题。 在所难免。 不过问题解决了, 多了一个使用方式。 哈哈哈

from nps.

nosun avatar nosun commented on July 17, 2024

我也遇到了这样的问题,不知道这个问题有没有解决呢,有什么方案呢?

from nps.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.