前言

对于一般开发网站的IDE自带的服务器是都跑在 localhost 地址上的。(如下图的asp.net)

而这种地址是只能在本机通过 localhost 或 127.0.0.1 地址访问到,而无法直接通过本机的内网IP地址访问的。

所以就无法实现在虚拟机中访问本地localhost站点,以及在虚拟机访问时的代码断点,调试,以及用手机访问本地站点等。

虽然可以使用IIS等web服务器发布本地IP上,来实现外部访问,但是依然无法实现代码断点,当然可以用附加进程调试,不是本文讨论范围。
接下来就来讲解如何使用本机内网地址访问localhost上运行的网站

实现思路

期望目标是:在虚拟机中访问真实机的内网IP地址来访问真实机中运行的localhost的站点。

遂,在真实机中开启Fiddler,来充当虚拟机的代理服务器,去向真实机请求资源,同时由Fiddler修改虚拟机的请求报文,将虚拟机的Request请求报文中的真实机的IP地址改为localhost。

设置Fiddler

要用到的软件只有一个,Fiddler,没有的可以去官网下载:http://www.telerik.com/fiddler
进入Fiddler的Tools的FiddlerOptions...选项,Connections选项卡
勾选上“Allow remote computers to connect”选项,允许其他计算机连接

如果你的端口没有被占用的话默认应该是  端口

设定虚拟机的代理服务器

之后进入虚拟机,设置系统代理为当前真实机的IP的8888端口,推荐使用我之前文章中写的“自动设置代理服务器批处理
设置完成后去查看设置情况, 10.0.1.11 是我的真实机的内网地址,端口8888。
 

设置完成后从虚拟机访问 真实机的IP+ 端口,如果能显示出FiddlerEchoService就说明代理没问题。

此时在虚拟机中访问百度已经可以被fiddler抓到了。
关于如何鉴别流量是本机的还是从远程访问的很容易,看Fiddler的Process列即可:

注意:本机流量可以追查到流量进程名及PID,而远程流量是无法显示进程的。

上图第一条就是由火狐发出的请求,而下面的流量都是从虚拟机发出的请求,没有进程名。

设置Fiddler自动化修改数据报文

现在从虚拟机已经可以通过我的真实机做代理向外访问了,所以接下来需要从代理服务器Fiddler中修改数据包即可。
需要一款FiddlerScript Editor的软件,可以从官网下载:http://www.telerik.com/download/fiddler/fiddlerscript-editor
关于FiddlerScript   的使用和介绍在之前的一篇文章中已经提到一些。

选择跳转至 OnBeforeRequest 函数。

通过右侧的API文档得知,oSession对象的属性hostname表示不包含端口号的HTTPHeader的host字段值。

在此函数最后写上如下代码,目的是要在数据发来请求后修改数据报文,将指向本机的URL修改localhost地址。

保存后回到虚拟机。访问10.0.1.11的localhost服务9527端口,可以发现,所有数据包都被修改为localhost地址
同时,我真实机上跑的localhost的服务也可以被内网其他计算机访问了。

手机端访问

前提是手机连接的wifi必须要和真实机在同一网段。
如图,虽然连接了同一网段的wifi下,但不设置也是无法访问的。

进入手机wifi设置,高级设置,代理设置,修改为“手动”
IP地址为我的真实机IP,10.0.1.11,
端口为Fiddler的监听端口:8888

设置了代理服务器后,就可以顺利通过IP地址访问localhost的服务了,当然也可以同步加断点,调试等。

注意事项

1,注意在使用过程中Fiddler不能关闭,关闭了就没有代理服务器了。
2,注意在使用完成后,把代理服务器设置删除,否则虚拟机/手机就无法正常上网了。

相关链接

工具下载(GitHub):

1、自动设置本机系统代理服务器.bat

2、删除本机代理服务器设置.bat

其他文章:

1、利用Fiddler断点功能,模拟网络问题

2、[批处理]自动设置本机系统代理服务器

如何远程断点调试本地localhost项目的更多相关文章

  1. .NET C#微信公众号开发远程断点调试(本地远程调试生产环境代码)

    最近在做微信公众号开发,由于之前没有接触过,突然发现调试不方便,不方便进行断点跟踪调试.因为微信那边绑定的服务器地址必须是公网地址,但是还是想进行断点调试(毕竟这样太方便了,程序有Bug,一步步断点跟 ...

  2. vscode断点调试本地客户端文件

    一.安装chrome,安装vscode,打开vscode编辑器,安装插件Debugger for Chrome 二.新建文件 1.目录结构 . ├── index.html ├── index.js ...

  3. PHP vscode+XDebug 远程断点调试服务器上的代码

    对于简单的项目或仅仅想知道某一位置的某个变量是什么值,直接使用var_dump配置exit来打印和中断就可以了,方便又快捷, 而对于大型项目的调试,或想了解某个系统的整个运行过程,xdebug可能会是 ...

  4. 不用print调试 xdebug ubuntu phpstorm 远程断点调试

    即使这会写php也遵守zebra大人的指示:不用print调试!!!!----环境ok  ---gan !!! w http://blog.csdn.net/ty_hf/article/details ...

  5. Intellij Idea中如何debug本地maven项目

    方法一:使用maven中的jetty插件调试本地maven项目 1.打断点 2.右击"jetty:run",选择Debug运行 3.浏览器发送http请求,开始调试 方法二:利用远 ...

  6. idea中如何debug本地maven项目

    方法一:使用maven中的jetty插件调试本地maven项目 1.打断点 2.右击“jetty:run”,选择Debug运行 3.浏览器发送http请求,开始调试 方法二:利用远程调试功能调试本地m ...

  7. phpstorm xdebug 无法断点调试问题

    最近用phpstorm+xdebug调试一段php代码的时候莫名其妙的无法切入断点调试 本地用的php集成环境是UPUPW ANK V1.1.7 64Bit 选择了集成环境中php版本为7.1.x 搞 ...

  8. IDEA2017 maven Spark HelloWorld项目(本地断点调试)

    作为windows下的spark开发环境 1.应用安装 首先安装好idea2017 java8 scalaJDK spark hadoop(注意scala和spark的版本要匹配) 2.打开idea, ...

  9. 微信公众号本地断点调试(frp反向代理或Remote Debugger)

    问题描述: 需要开发微信授权和订阅推送,但是感觉调试不方便,就试着几种方式.因为是用的C#开发,Visual Studio工具自带配套的远程工具 (Remote Debugger).但是感觉不稳定,容 ...

随机推荐

  1. MongoDB学习笔记——MongoDB 连接配置

    MongoDB连接标准格式: mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[dat ...

  2. 比较全面的MySQL优化参考(上下篇)

    转自:http://imysql.com/2015/05/24/mysql-optimization-reference-1.shtml 本文整理了一些MySQL的通用优化方法,做个简单的总结分享,旨 ...

  3. 被废弃的 Thread.stop, Thread.suspend, Thread.resume 和Runtime.runFinalizersOnExit

    最近学习多线程的知识,看到API里说这些方法被废弃了,就查了一下原因 Thread.stop 这个方法会解除被加锁的对象的锁,因而可能造成这些对象处于不一致的状态,而且这个方法造成的ThreadDea ...

  4. statement和preparedstatement用法区别

    1. PreparedStatement接口继承Statement, PreparedStatement 实例包含已编译的 SQL 语句,所以其执行速度要快于 Statement 对象.   2.作为 ...

  5. ASP.NET调用Web Service

    1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求, ...

  6. php类型转换以及类型转换的判别

    部分摘自PHP: 类型 - Manual 相关链接 PHP 在变量定义中不需要(或不支持)明确的类型定义:变量类型是根据使用该变量的上下文所决定的.也就是说,如果把一个 string 值赋给变量 $v ...

  7. Storm集群的安装与测试

    首先安装zookeeper集群,然后安装storm集群. 我使用的是centos 32bit的三台虚拟机. MachineName ip namenode 192.168.99.110 datanod ...

  8. JavaScript“尽快失败”的原则

    我第一次听说编码原则中有"尽快失败"这一条时,觉得很奇怪,为什么代码要失败?应该成功才对呀.但事实上,当代码在遇到错误的时候应该尽快的终止.为了检测各种状态,我们需要频繁的创建if ...

  9. ASP.NET URL伪静态重写实现方法

    ASP.NET URL伪静态重写实现方法 首先说下,ASP.NET URL伪静态只是将~/a_1.html指向到了~/a.aspx?ID=1,但a.aspx还是真实存在的,你不用./a_1.html来 ...

  10. mantis安装

    curl -O http://jaist.dl.sourceforge.net/project/mantisbt/mantis-stable/1.2.19/mantisbt-1.2.19.tar.gz ...