요구 사항은 주어진 JSON 페이로드로 특정 URL에 POST 요청을하는 것입니다. 페이로드가 정확하고 POST를 통해 요청한 경우에만 URL이 응답합니다. 그라인더에서 JSON 데이터를 보낼 때 POST 오류가 발생했습니다.
request1 = HTTPRequest()
control = HTTPPluginControl.getConnectionDefaults()
httpUtilities = HTTPPluginControl.getHTTPUtilities()
control.setProxyServer("proxy.example.com", 1234)
payload = JSONObject({
"uaaURL": "https://com-example.something.com",
"sampleID": "admin",
"sampleSecret": "password",
"sampleID2": "example-sample-el",
"sampleSecret2": "ssenjsoemal/+11=",
"username": "test",
"someAttributes": {
"Groups": [
"example_com-abc"
],
"attribute": [
"value1"
]
}
})
payload = str(payload)
url = "https://example-something.com:6443/getvalues"
headers = [
NVPair('Content-Type', 'application/json'),
NVPair('Charset', 'UTF-8'),]
class TestRunner:
def __call__(self):
result = request1.POST(url, payload, headers)
print payload, headers
지금이 가진 문제는 내 POST 요청이 나에게 금지 된 403을 제공한다는 것입니다 :
이 내 코드입니다. 그러나 동일한 페이로드를 사용하고 DHC를 사용하여 요청을 보내면 200이됩니다. 따라서 페이로드와 연결되는 링크가 확실합니다. 프록시 또한 다른 스크립트에서 테스트하고 잘 작동합니다. 프록시가 작동하지 않는다면 게다가, 나는 403도 얻지 못할 것이다. 마지막으로, POST에서 내부적으로 byte []로 변환 할 문자열을 POST에 두 번째 문자열로 요구하기 때문에이를 문자열로 파싱합니다.
저는 어떤 일이 일어나고 있는지 이해할 수 없으므로 어떤 통찰력이라도 대단히 도움이 될 것입니다. 사전
편집에 감사 : DHC의 요청의 피들러의 캐치
심지어 편집POST https://example-something.com:6443/getvalues HTTP/1.1
Host: example-something.com:6444
Connection: keep-alive
Content-Length: 688
Origin: chrome-extension://aejoelaoggembcahagimdiliamlcdmfm
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36
Content-Type: application/json
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.8
{
"uaaURL": "https://com-example.something.com",
"sampleID": "admin",
"sampleSecret": "password",
"sampleID2": "example-sample-el",
"sampleSecret2": "ssenjsoemal/+11=",
"username": "test",
"someAttributes": {
"Groups": [
"example_com-abc"
],
"attribute": [
"value1"
]
}
}
내 분쇄기 요청 헤더 너무
headers = (
NVPair('Content-Type', 'application/json'),
NVPair('Charset','UTF-8'),
NVPair('Accept', '*/*'),
NVPair('Accept-Encoding', 'gzip, deflate, br'),
NVPair('Accept-Language', 'en-US,en;q=0.8'),
NVPair('Connection', 'keep-alive'),
)
아이디어를 제공해 주셔서 감사합니다. 피들러를 사용하여 동일하게하고 있지만 그 결과를 정확히 이해할 수는 없습니다. Fiddler에서 DHC를 통해 요청이 이루어지면 Fiddler는 url에 대한 터널과 "getvalues"함수에 대한 https 호출의 두 가지를 선택합니다. 두 번째 https 호출에서 POST 데이터가 표시됩니다. 그러나 분쇄기 요청에 대해서는 분쇄기가 실행중인 기계의 IP에 대한/script/api/validate 호출이 하나 표시되고 200 OK로 표시됩니다. 원시 열에서 로그 상자에 그라인더 결과가 표시됩니다. 내 요청 데이터 또는 심지어 그 문제에 대한 403을 볼 수 없습니다. –
즉, DHC의 웹 사이트 요청을 명확하게 볼 수 있습니다. Grinder의 응답 만 볼 수 있습니다. 나는 그것이 대리인을 통해 그것을 보내고 있었기 때문에 나는 그 줄을 제거했기 때문에 그것이라고 생각했다. 그러나 나는 grinder의 반응 이외에 아무것도 볼 수 없다. –
그래서 어떤 이유로 사과/tangelos가 요청에 있습니다. 그라인더에서 오는 것은 DHC의 것과 일치하지 않습니다. DHC 요청을 그라인더 테스트 코드로 변환하여 고려해 보셨습니까? –