내 웹 API에서 POST 요청을 풍부하게하고 다른 URL로 전달하고 있습니다. 포스트맨은 포스트 요청을하는 데 사용됩니다.HttpRequest에서 호스트 헤더를 변경하면 서버 응답에 영향을 미칩니 까?
동작 : 요청이 지불 서버로 전달됩니다 http://private.store.internal/api/pay
에 POST. 테스트를 위해 내가 지정 "www.google.com"는 요청이 전달되어야하는 URL로
var newRequest = new HttpRequestMessage(HttpMethod.Post, request.DesiredDestination);
var response = await httpClient.SendAsync(newRequest, cancellation);
(물론 POST 요청에 아무것도 할 수없는) 나는 "newRequest"변수 헤더를 검사 할 때 컬렉션에는 URL의 값을 보유하고있는 "호스트"필드가 포함되어 있습니다.이 필드에는 내 API가 호스팅되는 fe
private.store.internal
이것은 예상대로 구글 서버에서 반환 된 헤더는 다음과 같습니다
이제"responseHeaders": [
{
"key": "Referrer-Policy",
"value": [ "no-referrer" ]
},
{
"key": "Alt-Svc",
"value": ["quic=\":443\"; ma=2592000; v=\"41,39,38,37,35\""]
},
{
"key": "Date",
"value": ["Wed, 25 Oct 2017 12:15:57 GMT" ]
},
{
"key": "Content-Length",
"value": ["1561"]
},
{
"key": "Content-Type",
"value": ["text/html; charset=UTF-8"]
}
],
"content": "<!DOCTYPE html>\n<html lang=en>\n <meta charset=utf-8>\n <meta name=viewport content=\"initial-scale=1, minimum-scale=1, width=device-width\">\n <title>Error 404 (Not Found)!!1</title>\n <style>\n...
내가 API는 (실제) 지불 서버에 호스팅 된 정보를 전달하지 않으려는 그래서 간단히 "호스트"필드를 제거했습니다 :
newRequest.Headers.Remove("Host");
그러나 요청이 전달되는 서버의 동작이 변경됩니다. 이제 응답은
"responseHeaders": [
{
"key": "X-XSS-Protection",
"value": ["1; mode=block"]
},
{
"key": "X-Frame-Options",
"value": ["SAMEORIGIN"]
},
{
"key": "Alt-Svc",
"value": ["quic=\":443\"; ma=2592000; v=\"41,39,38,37,35\""]
},
{
"key": "Date",
"value": ["Wed, 25 Oct 2017 12:18:52 GMT"]
},
{
"key": "Server",
"value": ["gws"]
},
{
"key": "Content-Length",
"value": ["1589"]
},
{
"key": "Allow",
"value": ["GET","HEAD"]
},
{
"key": "Content-Type",
"value": ["text/html; charset=UTF-8"]
}
],
"content": "<!DOCTYPE html>\n<html lang=en>\n <meta charset=utf-8>\n <meta name=viewport content=\"initial-scale=1, minimum-scale=1, width=device-width\">\n <title>Error 405 (Method Not Allowed)!!1
입니다. 이는 완전히 다릅니다. 내 질문은 : 왜/내 API를 호출하는 호스트 속성을 변경/제거 웹 서버의 응답을 변경합니까?
왜 'newRequest.Headers.Remove ("Host");'가 필요하다고 생각하는지 자세히 설명 할 수 있습니까? – mjwills
결제 제공자 (제 3 자 API)가 전화가 어디서 왔는지 알고 싶지 않기 때문에. 내부 서버의 이름을 공개하고 싶지 않습니다. – HannesB
제거하기 전에 Host 헤더의 값은 무엇입니까? – mjwills