javascript - 在 Google Colab 上,来自 Javascript 的 localhost 访问失败
问题描述
我有一个 Javascript 片段,我的 Jupyter Notebook 安装到浏览器页面中。它访问在我的 PC 上运行的支持 REST 的交互式应用程序(即 Cytoscape)。
来自 Javascript 的 Cytoscape 调用的一个示例是“GET http://localhost:1234/v1/version”......由正常的 xmlHTTPRequest.send() 调用执行。
在其他 Jupyter Notebook 系统(例如 GenePattern Notebook)上,这可以正常工作。查看 Chrome 的网络跟踪,看起来我的 HTTP 调用被拦截了,并且对 colab 的单独调用似乎试图授权调用(???)。以下是 Chrome 在调试控制台中显示的内容:
colab 电话似乎发生在这里:https ://colab.research.google.com/v2/external/external_polymer_binary.js?vrz=colab-20200817-085601-RC01_327067882
最后,我的电话似乎被禁止了……我得到了一个 HTTP 状态 500。
知道如何说服 colab 让我对本地 Cytoscape 的 Javascript 级调用通过吗?任何信息都可能会有所帮助。
谢谢!
解决方案
Colab 中的请求localhost
被重定向到 VM 后端。
详细信息在这里: https ://colab.research.google.com/notebooks/snippets/advanced_outputs.ipynb#scrollTo=R8ZvCXC5A0wT
一种解决方法是将请求定向到127.0.0.1
而不是主机名localhost
。只有localhost
请求被拦截。
具体来说,此单元将从 Colab 后端 VM 获取:
%%javascript
// Fetches from the backend VM on port 1234.
fetch('http://localhost:1234/')
而此单元格将从运行浏览器的本地计算机中获取。
%%javascript
// Fetches from the machine running the browser.
fetch('http://127.0.0.1:1234/')
推荐阅读
- javascript - 如何检查字段集中的任何表单元素是否具有焦点
- javascript - MVC轮播在IE11中不起作用
- javascript - Vuex:使用突变变量设置状态对象
- c# - 填充数组时出现 System.InvalidOperationException 错误
- amazon-web-services - 如何在cli的ec2输出中使用过滤器
- python - 从已发布的 Power BI 视觉对象中抓取数据
- mysql - MySQL - 查询以使用外部参考值更新所有行?
- node.js - 如何在节点js中访问查询回调之外的变量
- android - 谷歌地图的地理围栏和准确性,以使用付费版本的谷歌地图 API 定位特定地点
- javascript - 经纬度和坐标格式的区别