【发布时间】:2022-12-10 04:56:42
【问题描述】:
所以我有这个使用需要通过 Apigee 的 HTTPBsaicAuth 的工作请求。我使用 Basic Auth 配置了我的 Apigee 代理以检索标头中的用户名和密码但是我继续收到错误:
{"fault":{"faultstring":"Gateway Timeout","detail":{"errorcode":"messaging.adaptors.http.flow.GatewayTimeout"}}}
这是没有 Apigee 传递的原始请求:
import requests
from requests.auth import HTTPBasicAuth
url = "https://myapi.com/path"
auth = HTTPBasicAuth("username", "password")
response = requests.get(url, auth=auth, verify=False)
上面的请求没有问题。我的新请求,包括标头中的 Apigee url 和 apikey:
import requests
from requests.auth import HTTPBasicAuth
url = "https://apigee-proxy.com/basepath/path"
headers = {
"apikey" : "XXXXXX",
"username": "username",
"password": "password"
}
response = requests.get(url, headers=headers, verify=False)
代理设置,非常基本:
<ProxyEndpoint name="default">
<Description/>
<FaultRules/>
<PreFlow name="PreFlow">
<Request/>
<Step>
<Name>Extract-Variables-1</Name>
</Step>
<Step>
<Name>Basic-Authentication-1</Name>
</Step>
<Response/>
</PreFlow>
<PostFlow name="PostFlow">
<Request/>
<Response/>
</PostFlow>
<Flows>
</Flows>
<HTTPProxyConnection>
<BasePath>/basepath</BasePath>
<Properties/>
<VirtualHost>default</VirtualHost>
</HTTPProxyConnection>
<RouteRule name="default">
<TargetEndpoint>default</TargetEndpoint>
</RouteRule>
</ProxyEndpoint>
更新:Basic-Authenication-1.xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
<Source>request</Source>
<Header name="username">
<Pattern ignoreCase="true">{username}</Pattern>
</Header>
<Header name="password">
<Pattern ignoreCase="true">{password}</Pattern>
</Header>
<VariablePrefix>auth</VariablePrefix>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</ExtractVariables>
Basic-Authentication-1 政策:
<BasicAuthentication async="false" continueOnError="true" enabled="true" name="Basic-Authentication-1">
<DisplayName>Basic Authentication-1</DisplayName>
<Operation>Encode</Operation>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<User ref="auth.username"/>
<Password ref="auth.password"/>
<AssignTo createNew="false">request.header.Authorization</AssignTo>
</BasicAuthentication>
默认路由规则:
<TargetEndpoint name="default">
<Description/>
<FaultRules/>
<PreFlow name="PreFlow">
<Request/>
<Response/>
</PreFlow>
<PostFlow name="PostFlow">
<Request/>
<Response/>
</PostFlow>
<Flows/>
<HTTPTargetConnection>
<LoadBalancer>
<Server name="my_target"/>
</LoadBalancer>
<Path>/</Path>
</HTTPTargetConnection>
</TargetEndpoint>
目标服务器环境变量“my_target”=myapi.com,port=443
有什么我想念的吗?任何帮助表示赞赏。
【问题讨论】:
标签: python python-requests apigee