前言

对于一般开发网站的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”选项,允许其他计算机连接

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

设定虚拟机的代理服务器

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

设置完成后从虚拟机访问 真实机的IP+8888 端口,如果能显示出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、[批处理]自动设置本机系统代理服务器

转载于:https://www.cnblogs.com/xxcanghai/p/5173936.html

如何远程断点调试本地localhost项目相关推荐

  1. IDEA如何远程断点调试jar包

    1.问题 以jar包的形式运行Spring Boot项目时报错,但是在IDEA开发环境下编译运行Spring Boot项目不报错,如何复现jar包运行时的错误呢?这就需要在IDEA下远程断点调试jar ...

  2. IDEA远程断点调试jar包

    今天做项目时碰到一个问题,线上服务报错,本地环境却没问题,此时就需要我们去线上的机器远程debug,可以采用idea Remove JVM Debug模式. 步骤 第一步:点击Edit Configu ...

  3. IDEA 远程断点调试

    IDEA 远程断点调试 有时候,有些bug无法在本地环境复现,此时就需要我们去线上的机器远程debug,可以采用idea Remove JVM Debug模式. 首先,点击Edit Configura ...

  4. idea远程断点调试

    在idea里面配置远程断点调试 192.168.198.130 是远程服务端口,5005是远程服务连接端口 在linux启动在线服务, 在启动服务里面加入参数 -Xdebug -agentlib:jd ...

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

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

  6. phpstorm + xdebug 远程断点调试

    CentOS(Linux)下安装Xdebug Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况,本文主要记录一下在centos(li ...

  7. 禅道 my.php debug,PHP vscode+XDebug 远程断点调试服务器上的代码

    参考链接 断断续续做php五年了,前期只在开发机器上debug,中期从不debug,有什么问题var_dump一下,现在遇到一个fpdf的问题,无奈必须debug服务器. 我只是记录一下自己遇到的问题 ...

  8. 远程断点调试不需要跟时间赛跑

    大多数时候远程调试采用的方法是启动web服务器后,再在IDE工具中开启debug功能,这类设置debug上篇 有一个描述,不过这个方法有一个缺点:如果应用本身启动比较快,在你启动web服务器后,需要迅 ...

  9. quarkus 入门教程(二) -项目开发模式热更新及项目断点调试方法

    quarkus 入门教程(二) -项目断点调试方法 1.项目热更新 quarkus:dev runs 方式启动,项目会以开发者模式启动,当修改了java文件或者resource文件后,项目会在后台编译 ...

最新文章

  1. 对称加密、工作模式和填充模式
  2. 编写更好的CSS代码
  3. 计算机组成原理平均cpi怎么算_计算机组成原理--1.2计算机系统性能评价
  4. 手把手教你刷新BACKUP Bios
  5. 团队软件开发第一次冲刺(六)
  6. [css] 如何消除transition闪屏?
  7. Leetcode--19. 删除链表的倒数第N个节点
  8. sql server 查看表、视图、触发器、存储过程等组成sql查询语句
  9. mysql8.0登录不上去怎么回事_速看!智慧团建系统登录平台及信息查询入口
  10. 【我来解惑】.Net应该学什么怎么学(二)
  11. 雷林鹏分享:PHP 实例 - AJAX 与 XML
  12. 随机过程之更新理论的应用
  13. 助力Java初级程序员快速成长的营养书单
  14. java1.8垃圾回收机制_JAVA垃圾回收机制
  15. html涟漪动画效果,css3点击显示涟漪特效
  16. 常见分布式应用系统设计图解(十二):证券交易系统 | 极客分享第 12 期
  17. 苹果手机的计算机怎么设置快捷键大全,教程方法;苹果电脑快捷键大全最常用的都在这里了电脑技巧-琪琪词资源网...
  18. HTML- 01:HTML 语言简介
  19. emmx文件用什么软件打开电脑_我告诉你emmx文件怎么打开
  20. ISO14229之概述

热门文章

  1. Android OpenGL ES 开发教程(16):Viewing和Modeling(MODELVIEW) 变换
  2. 【转帖】Eclipse快捷键指南
  3. Android课设电台论文,基于Android的超短波电台多媒体传输系统
  4. 2019-12-04 Using PAPI to Measure Execution Time
  5. Vue-cli搭建vue基础项目
  6. Cocos Creator 编辑器扩展
  7. 跨平台APP----对Cordova,APPCan,DCloud,APICloud四大平台的分析
  8. 让C#语言充当自身脚本!——.NET中的动态编译
  9. arcgis支持python3吗_常见问题解答:ArcGIS 中使用的 Python 是什么版本?
  10. oracle表单独创建完成之后,在加备注语法