我想基于请求标头将Apache中的请求转发给不同的转发代理.我认为最好的方法是使用mod_rewrite,但它只能使用在相同的apache配置中定义的反向代理.
我还检查了mod_proxy的ProxyRemote属性,但它不能根据条件使用,只能基于请求url.
我需要这样的东西:
如果X-CUSTOM-HEADER是值-1 - >转发请求转发代理p1如果X-CUSTOM-HEADER是值-2 - >转发请求转发代理p2
等等
Din有人设法制作这样的东西吗?
谢谢,艾琳
我正在开发一个获取Web服务名称的servlet,可以将请求转发给外部Web服务,例如: http://www.webservice.com/...
我已经构建了一个拦截响应输出的响应包装器,但是我无法将请求转发到外部Web服务,只有当我将请求重定向到同一服务器上的servlet时,它才有效.
例:
request.getRequestDispatcher("aMyServlet").forward(request, response) // WORKS
request.getRequestDispatcher("http://www.webservice.com/...").forward(request, response)
Run Code Online (Sandbox Code Playgroud)
不是因为Tomcat http://www.webservice.com/...在服务器上搜索本地资源.
我该怎么办外部请求?
谢谢
我尝试使用procmail将所有传入电子邮件中的副本发送到另一个电子邮件帐户(两者都在同一台服务器上,例如email1和email2帐户).
我的.procmailrc在email1帐户中:
:0c
! email2
Run Code Online (Sandbox Code Playgroud)
据我所知,这应该在email1帐户中保留一份副本.但该文件夹中没有电子邮件.(转发的电子邮件正确地出现在email2帐户中.)
我怎么解决这个问题?
注意:.forward文件包含:
| "/usr/bin/procmail"
Run Code Online (Sandbox Code Playgroud)
编辑
这项工作对我来说(非常感谢tripleee):
首先,我必须设置DEFAULT变量.(默认为$ ORGMAIL,ORGMAIL默认为/ var/mail/$ LOGNAME,如procmailrc手册中的环境变量默认部分所述.)
其次,我必须将尾随/设置为DEFAULT和MAILDIR.(如果没有尾随/,procmail使用mbox格式,它会在指定目录中创建一个像msg.oqs这样的mbox文件.)
所以完整的.procmailrc:
DEFAULT=$HOME/Maildir/
MAILDIR=$HOME/Maildir/
:0c
! email2
Run Code Online (Sandbox Code Playgroud)
如果您想调试,请在MAILDIR之后写下这些行:
LOGFILE=$HOME/procmail.log
LOGABSTRACT=yes
VERBOSE=yes
Run Code Online (Sandbox Code Playgroud) 我正在使用Bind9作为我办公室的DNS服务器.
我们有一个区域:example.com.必须从我们的DNS服务器解析为权威.
另一方面,我们有一个sub.example.com.zone,必须转发到其他DNS服务器.
当我们在example.com上查询任何记录时绑定答案.区.但是对于sub.example.com的查询失败了.因为它不做转发.它一直在寻找当地的答案.
这是named.conf文件
zone "sub.example.com" IN { type forward;
forwarders {172.21.238.229;172.21.238.230;};
forward only;
};
zone "example.com" {
type master;
forwarders {};
file "/etc/named/example.com.db";
};
Run Code Online (Sandbox Code Playgroud)
这是example.com.db文件内容:
$ORIGIN example.com.
$TTL 1W
@ IN SOA dnsldes.example.com. postmaster.example.com. (
6 ; serial number
3600 ; refresh [1h]
600 ; retry [10m]
86400 ; expire [1d]
3600 ) ; min TTL [1h]
;
IN NS dnsldes.example.com.
bdred IN A 172.22.2.150
dnsldes IN A 172.21.229.159
Run Code Online (Sandbox Code Playgroud)
这是使用dig客户端的bdred.example.com查询的输出(可以):
; <<>> DiG 9.8.1-P1 <<>> bdred.sub.example.com
;; global …Run Code Online (Sandbox Code Playgroud) 我试图将2个控制器结果放在一个控制器中,所以我使用'$response = $this->forward('Bundle:Controller:functionXXX');' 转发第一个控制器.
在控制器' functionXXXAction'我使用renderView返回响应.
问题是转发函数在页面顶部返回此标题:
"HTTP/1.0 200 OK Cache-Control: no-cache Date: Wed, 24 Apr 2013 09:56:50 GMT"
Run Code Online (Sandbox Code Playgroud)
任何解决方案将其隐藏在页面中?!
从我所读到的,我应该尽可能使用前瞻声明.我有这样的类(由于前向声明,每个字段都是指针):
class A
{
// ...
A* a;
B* b;
C* c;
D* d;
E* e;
};
Run Code Online (Sandbox Code Playgroud)
但是存在问题.
1 - 这意味着调用new和delete(或至少与全新智能指针),用于构造每一个领域,而堆栈中分配领域不需要这个.
2-我读过堆栈分配比堆分配快.
3-这也意味着几乎每个类的每个字段都应该是指针.
我是否以正确的方式做我的示例类?或者我错过了有关前瞻性声明的内容?
标题几乎描述了我的目标.这是代码[仅适用于WebKit]:
我们有两个div,elem1和elem2.还有一个名为logger的文本框来显示结果.elem1有一些带溢出的文本:滚动.
function eventHandler(e){
var myEvt = new e.constructor(e.type, e);
document.getElementById('elem1').dispatchEvent(myEvt);
}
function elem1MouseScroll(e){
document.getElementById('logger').value='mousescroll on ' + (e.target || e.srcElement).id + ' at (' + e.clientX + ', ' + e.clientY + ')';
}
document.getElementById('elem1').addEventListener('mousewheel', elem1MouseScroll, false);
document.getElementById('elem2').addEventListener('mousewheel', eventHandler, false);
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/s4hwt886/1
[蓝色div上的鼠标滚轮滚动应该转发到粉红色div.顶部的文本框显示结果.]
正如您所看到的,即使来自elem2的mousewheel事件在elem1上触发相同,遗憾的是elem1中的内容实际上并未实际滚动.
我很困惑.有人可以帮忙吗?您不必担心Gecko部分无法正常工作.构造函数技巧在Gecko中不起作用,因此代码会更大一些.这就是为什么我没有把它包括在小提琴中.
编辑:在Chrome中,这个小提琴就像我想要的那样.所以我更新了代码以支持Gecko.不幸的是,Firefox表现得像Safari一样.转发事件正在触发,我可以在日志文本框中看到它,但内容不滚动.这是更新的小提琴:http://jsfiddle.net/s4hwt886/2/
NB我想要一个非Jquery解决方案.我能找到的所有其他类似线程都与Jquery有关.
我正在使用这个C#库连接到Telegram API:TLSharp
这个库的资源还不够,我正在尝试将消息转发到频道.
我不太确定如何获得频道帖子peerID(用于转发函数输入参数)
var store = new FileSessionStore();
var client = new TelegramClient(Properties.Settings.Default.apiID, Properties.Settings.Default.apiHash, store, "session");
await client.ConnectAsync();
var dialogs = (TLDialogs)await client.GetUserDialogsAsync();
var chat = dialogs.chats.lists
.OfType<TLChannel>()
.SingleOrDefault(a=>a.title=="test");
await client.SendRequestAsync<TLAbsUpdates>(
new TLRequestForwardMessage()
{
id = 2,
peer = new TLInputPeerChannel() { channel_id = chat.id, access_hash = chat.access_hash.Value },
random_id = Helpers.GenerateRandomLong()
});
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
{ "PEER_ID_INVALID"}
请帮助我,该对等ID是什么以及如何使用TLSharp来访问和使用它来转发消息.谢谢.
我的网络中有 SQUID 作为 https 转发代理。我的一个应用程序从网络发送 SAOP 请求。SOAP Web 服务需要客户端证书进行身份验证。我已经为我的应用程序配置了密钥库和信任库。应用程序无需 SQUID 代理即可直接正常工作。
它也适用于 SQUID 隧道(即 ssl_bump splice )。
但我们不想使用拼接。我们需要 SQUID 来解密 SSL 流量并进行身份验证并将身份验证证书(客户端证书)传递到 Web 服务服务器。对于这种情况,SQUID 可能的配置是什么?
有关信息:SQUID 代理可以在不需要客户端证书进行身份验证的 HTTP 和 HTTPS 流量中正常工作。示例“ https://www.google.com ”
我想将REST请求转发到另一台服务器。
我将JAX-RS与Jersey和Tomcat一起使用。我尝试通过设置See Other响应和添加Location标题来进行尝试,但这并不是真正的前进。
如果我使用:
request.getRequestDispatcher(url).forward(request, response);
Run Code Online (Sandbox Code Playgroud)
我得到:
java.lang.StackOverflowError:如果网址是相对路径java.lang.IllegalArgumentException:路径http://website.com不能以/字符开头(我认为转发仅在同一servlet上下文中是合法的)。如何转发请求?