Excel에서 하이퍼 링크를 클릭하면 리소스가 세 번 (또는 URL을 방문한 경우 두 번) 호출됩니다. 브라우저에서 예상대로 첫 번째와 두 번째 시간을 숨기고 세 번째로 숨 깁니다.
세부
Excel 2016에서 다음과 같은 HYPERLINK-formular를 사용하고 있지만 공식화 기와 하이퍼 링크 기능없이 작업 할 때도 문제가 발생합니다.
=HYPERLINK(CONFIRM_NO_DATA_URL&B3)
어쨌든, 이와 같은 URL을 호출해야합니다
http://example.org/index.php?action=replyToEmailId&emailId=123123123
셀을 클릭하면 올바른 URL로 새 탭이 열립니다.
그러나 : URL은 실제로 세 번 호출됩니다 (첫 번째 이메일은 짧은 지연으로 3 개의 이메일이 전송되었으므로 알았습니다).
Http-Headers를 파일에 넣어서 이것이 어디서 왔는지 알아 내려고했습니다. 엑셀은 브라우저에서 링크를 열기 전에 하이퍼 링크를 내부적으로 호출합니다. 또한 제공된 Http-Headers는 최종 요청과 다릅니다.
첫 번째 숨겨진 요청
이것은 HEAD Http-Request-Method를 사용한 첫 번째 요청입니다.
{
"HTTP_USER_AGENT": "Microsoft Office Excel 2014 (16.0.10730) Windows NT 10.0",
"HTTP_X_OFFICE_MAJOR_VERSION": "16",
"HTTP_X_MS_COOKIEURI_REQUESTED": "t",
"HTTP_X_FEATUREVERSION": "1",
"HTTP_ACCEPT_AUTH": "badger,Wlid1.1,Bearer",
"REMOTE_PORT": "50216",
"REQUEST_METHOD": "HEAD",
"REQUEST_TIME_FLOAT": 1537284526.406,
"REQUEST_TIME": 1537284526
}
HEAD 메소드는 서버가 응답으로 메시지 본문을 리턴해서는 안된다는 점을 제외하고는 GET과 동일합니다. 출처 : [w3.org] [1]
두 번째 숨겨진 요청
두 번째 요청은 식별하기 어렵습니다. Excel은 여러 사용자 에이전트를 조롱하는 것처럼 보입니다.
{
"HTTP_ACCEPT": "*\/*",
"HTTP_USER_AGENT": "Mozilla\/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident\/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; ms-office)",
"HTTP_ACCEPT_ENCODING": "gzip, deflate",
"REMOTE_PORT": "50221",
"REQUEST_METHOD": "GET",
"REQUEST_TIME_FLOAT": 1537284527.807,
"REQUEST_TIME": 1537284527
}
의문
Excel 측 에서이 동작을 방지하는 방법은 무엇입니까?
(필자는 " ms-office "또는 REQUEST_METHOD " HEAD "를 포함하는 HTTP_USER_AGENT를 차단하여 PHP 스크립트에서이를 방지 할 수 있지만 깨끗한 솔루션을 선호합니다.
사이드 노트
업데이트 # 1
방금이 SO -question을 발견했습니다.이 질문은 동일한 행동을 설명합니다 : https : //.com/questions/24993813/link-in-excel-cause-duplicate-invocation
업데이트 # 2 깊은이로 파고 동안 내가 더 찾을보다 종류-의 연결 SO 이 "기능"의 좋은 설명을 제공하는이처럼, -threads : https://webmasters.stackexchange.com/a/71151
그러나 약간의 차이가 있습니다. 필자의 경우 첫 번째 요청의 요청 방법은 HEAD이며 위에서 언급 한 답변과 달리 OPTION이 아닙니다. 어쨌든, 이것은 여전히 문제 해결에 도움이되지 않습니다.
업데이트 # 3 이것을 재현하는 동안 두 개가 아닌 세 개의 요청이 있음을 알았습니다.