前言

对于一般开发网站的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. MyEclipse 6.5 代码自动提示功能配置教程

    1. 打开MyEclipse 6.0.1,然后“window”→“Preferences” 2. 选择“java”,展开,“Editor”,选择“Content Assist”. 3. 选择“Cont ...

  2. 编译流程,C开发常见文件类型名

    编译流程 我们常说的编译是一个整体的概念,是指从源程序到可执行程序的整个过程,实际上,C语言编译的过程可以进一步细分为预编译->编译->汇编->链接 预编译是把include关键字所 ...

  3. 华硕飞行堡垒zx50安装Ubunutu折腾记

    今年8月入手了华硕zx50,配置不错,作为一个合格的Linux爱好者,没买来一台电脑肯定得装上Linux编个程序什么的吧,,可恶的是,笔记本安装Linux系统往往比较麻烦,必须折腾很久才安装上,我手上 ...

  4. cordova Process finished with exit code -1

    安装完cordova之后,创建一个测试项目后,运行报Process finished with exit code -1,经过查找原因,是因为gradle没有安装,在http://www.androi ...

  5. Python2

    安装pycharm专业版,不要汉化 要想写的代码支持linux和2.0版本需要在开头加上注释 #/usr/bin/env python #-*- coding:utf-8 -*- 运算符 结果是值 算 ...

  6. 循环 wxl

    #include <cstdio> #include <cstring> #include <string> #include <algorithm> ...

  7. TestNG之执行顺序

    如果很有个测试方法,并且这几个方法又有先后顺序,那么如果让TestNG按照自己想要的方法执行呢 一.通过Dependencies 1.在测试类中添加Dependencies @Test public ...

  8. ZBrush中的SubTool工具该怎样使用

    今天的ZBrush教程中将为大家引入一个新的工具SubTool,使用SubTool您可以添加PolyMesh至当前编辑的模型中,它的出现改变了过去ZBrush不能同时编辑多个模型的弊端. 查看详细的视 ...

  9. hihocoder 1388 &&2016 ACM/ICPC Asia Regional Beijing Online Periodic Signal

    #1388 : Periodic Signal 时间限制:5000ms 单点时限:5000ms 内存限制:256MB 描述 Profess X is an expert in signal proce ...

  10. 边工作边刷题:70天一遍leetcode: day 85-2

    Paint Fence 要点: 这题是求number of ways,如果是相邻不相同颜色,那么就trivial了:k*(k-1)^(n-1).所以这里no more than two adjacen ...