我有鸡和鸡蛋的问题.
我使用Node.js HTTPServer将Web请求路由到不同的Node.js工作者,具体取决于它们在请求标头中发送的Connect.SID cookie.
我的每个Node.js工作者都使用Connect/Express,并在第一次连接请求时分配Connect.SID cookie.
显然,如果请求具有未向该节点实例注册的Connect.SID,则Connect会分配新ID.
所以,我有一个新的Connect.SID.我的HTTP代理记录ID 12345并将其路由到工作人员#5.Worker#5将新的ID 56344发送回浏览器.下一个浏览器请求 - HTTP代理看到一个全新的ID - 56344 - 记录它并发送给Worker#6.工人#6看到新的SID和....
Connect Session中间件太......简单......
app.use(express.cookieParser());
app.use(express.session({ secret: "niceTry", cookie: { /* ... */ } }));
Run Code Online (Sandbox Code Playgroud)
有没有办法将逻辑注入到新的会话ID的分配中,如果已经有未注册但有效的Connect.SID,它会跳过它?
我有一个节点服务器,我正在代理我的api请求http-proxy-middleware,类似于这篇文章中发生的事情.当我代理到真正的生产服务器时,一切正常,但是当我将代理指向本地服务器时,它只是不起作用.
这是我的代码:
app.use('/_api', proxy({target: 'http://localhost:9000', changeOrigin: true}));
服务器上:
http://localhost:9000/hello 工作(我可以从我的浏览器访问它),但是,当我尝试从我自己的服务器访问它时,像这样:
http://localhost:3000/_api/hello
我正进入(状态:
不能GET/_api /你好
如果我用真正的服务器替换localhost:9000,一切正常......
我正在尝试将 BrowserSync 配置为在服务器模式下工作,并使用http-proxy-middleware将我的 API 请求代理到在不同端口的同一台机器上运行的后端。我使用 Gulp 来启动 BrowserSync。
BrowserSync 在端口 8081 上运行。我的后端在 8080 上运行。
这是我创建代理中间件的方法:
var proxyApi = proxy('/api', {target : 'http://localhost:8080/api', logLevel : 'debug'});
Run Code Online (Sandbox Code Playgroud)
这是我从 Gulp 任务运行 BrowserSync 的方式:
// Init BrowserSync with proxies as middleware and based on the dest dir
browserSync.init({
open: true,
port: config.proxyPort,
server: {
baseDir: config.destDir,
middleware: [proxyApi]
},
browser: "google chrome"
});
Run Code Online (Sandbox Code Playgroud)
输出 :
[HPM] Proxy created: /api -> http://localhost:8080/api
Run Code Online (Sandbox Code Playgroud)
一切看起来都不错。
但是当我点击 eg 时http://localhost:8081/api/users,输出是:
[HPM] GET /api/users/123 -> http://localhost:8080/api …Run Code Online (Sandbox Code Playgroud) 我正在尝试这样做以转储HTTP GET请求的响应,并将相同的响应写入http.ResponseWriter。这是我的代码:
package main
import (
"net/http"
"net/http/httputil"
)
func handler(w http.ResponseWriter, r *http.Request) {
resp, _ := http.Get("http://google.com")
dump, _ := httputil.DumpResponse(resp,true)
w.Write(dump)
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
Run Code Online (Sandbox Code Playgroud)
我得到了一整页的google.com的HTML代码,而不是Google的首页。有没有办法可以达到类似代理的效果?
我有一个用例,我想用连接到代理服务器HTTP,但基础请求实际上是GET用HTTPS。我一直在阅读什么时候应该在HTTP代理服务器上使用CONNECT和GET HTTP方法?,但我想需要澄清一下。由于基本请求是否HTTPS意味着我“连接”到代理服务器时,它将自动打开a CONNECT并仅通过我的HTTPS请求?我主要关心的是,如果我HTTP用来连接到代理服务器,那么基础HTTPS请求就会以某种方式暴露,直到命中代理服务器。提前致谢。
我正在一堆不需要 http_proxy 的服务器和其他需要它的服务器上运行剧本(在不同的运行中)。
我已经阅读了https://docs.ansible.com/ansible/latest/user_guide/playbooks_environment.html但它并没有真正回答这个问题......
这是一个例子:
- hosts: all
tasks:
- name: install vi
become: true
apt:
name: vi
state: present
我想在没有代理的情况下使用一组服务器(假设 server01-atlanta)启动它,并在另一个运行中使用一组服务器(假设 server01-berlin)使用代理启动它,并且不更改每次运行之间的代码(因此设法用库存变量来做)。
我会
我试图将新的查询参数添加到我的node-http-proxy中的原始请求中,像这样直接调整req.query是行不通的:
app.all(path, function (req, res) {
req.query.limit = 2;
apiProxy.web(req, res, { target: target });
});
Run Code Online (Sandbox Code Playgroud)
这limit目标未收到
我想通过这种方式隐藏 API 密钥,是否可以添加新的查询参数?
我有一个 .NET Core 2.2 控制台应用程序可以连接到 Azure 存储队列。它在我的电脑上工作,但我无法让它在公司代理后面工作。我需要做什么?(我对存储帐户名称和密钥以及代理主机名进行了匿名处理。)
.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<LangVersion>8.0</LangVersion>
<NullableContextOptions>enable</NullableContextOptions>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Azure.Management.Fluent" Version="1.21.0" />
<PackageReference Include="Microsoft.Azure.Storage.Queue" Version="10.0.1" />
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
包装类:
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Queue;
using System.Threading.Tasks;
namespace Queue
{
public class Queue
{
public Queue(string connectionString, string queueName)
{
var storageAccount = CloudStorageAccount.Parse(connectionString);
var cloudQueueClient = storageAccount.CreateCloudQueueClient();
CloudQueue = cloudQueueClient.GetQueueReference(queueName);
}
private CloudQueue CloudQueue { get; }
public async Task<string> PeekAsync()
{
var m = await CloudQueue.PeekMessageAsync();
return m.AsString;
}
}
} …Run Code Online (Sandbox Code Playgroud) 我使用以下代码通过命令行工具 adb 设置 Android HTTP 代理。
adb shell settings put global http_proxy <ip>:<port>
Run Code Online (Sandbox Code Playgroud)
但是,当我想撤消代理设置时,以下代码不会删除代理。尽管清除了这些系统属性,Android 设备仍会尝试连接<ip>:<port>
adb shell settings delete global http_proxy
adb shell settings delete global global_http_proxy_host
adb shell settings delete global global_http_proxy_port
Run Code Online (Sandbox Code Playgroud)
我必须重新启动 Android 设备才能删除代理。有没有办法在不重启设备的情况下清理代理?
安卓版本是7.0。
要重现此问题:
# Set up a proxy
adb shell settings put global http_proxy <ip>:<port>
# Remove them
adb shell settings delete global http_proxy
adb shell settings delete global global_http_proxy_host
adb shell settings delete global global_http_proxy_port
# Then open a browser, it …Run Code Online (Sandbox Code Playgroud) 我的端点上有一个反向代理,如下所示:
var express = require('express');
var app = express();
var httpProxy = require('http-proxy');
var apiProxy = httpProxy.createProxyServer();
var serverOne = 'https://idena.navarra.es/ogc/wms?';
app.all('/idena', function (req, res) {
apiProxy.web(req, res, {target: serverOne});
});
app.listen(3000, function () {
console.log('Working!');
});
Run Code Online (Sandbox Code Playgroud)
当/idena收到请求时,服务器会抛出如下异常:
错误 [ERR_TLS_CERT_ALTNAME_INVALID]:主机名/IP 与证书的替代名称不匹配:主机:本地主机。不在证书的 altnames: DNS:idena.navarra.es, DNS: www.idena.navarra.es at Object.checkServerIdentity (tls.js:235:17) at TLSSocket.onConnectSecure (_tls_wrap.js:1061:27)在 TLSSocket.emit (events.js:189:13) 在 TLSSocket._finishInit (_tls_wrap.js:633:8)
我该如何解决这个问题?猜测是由于https但不知道如何避免这种情况,谢谢!
http-proxy ×10
proxy ×6
node.js ×5
javascript ×4
express ×2
.net-core ×1
adb ×1
android ×1
ansible ×1
azure ×1
browser-sync ×1
c# ×1
connect.js ×1
cookies ×1
go ×1
http ×1
https ×1
proxy-server ×1
ssl ×1