Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TWebBrowser:在从流加载HTML时设置referer头_Javascript_Html_Delphi - Fatal编程技术网

Javascript TWebBrowser:在从流加载HTML时设置referer头

Javascript TWebBrowser:在从流加载HTML时设置referer头,javascript,html,delphi,Javascript,Html,Delphi,我正在通过DelphiXE3中的TWebBrowser访问Google地图API 最初,TWebBrowser通过Navigate2加载到“about:blank”。然后在代码中动态生成要呈现的HTML,并通过流加载到TWebBrowser中 这一切都很好,只要我使用免费地图API。为了将地图用于业务,对API的请求必须来自预先注册的URL,Google根据GET请求中的referer头来确定该URL,而“浏览器”在加载Javascript时通常会发送该请求。尽管我在初始Navigate2调用中

我正在通过DelphiXE3中的TWebBrowser访问Google地图API

最初,TWebBrowser通过Navigate2加载到“about:blank”。然后在代码中动态生成要呈现的HTML,并通过流加载到TWebBrowser中

这一切都很好,只要我使用免费地图API。为了将地图用于业务,对API的请求必须来自预先注册的URL,Google根据GET请求中的referer头来确定该URL,而“浏览器”在加载Javascript时通常会发送该请求。尽管我在初始Navigate2调用中指定了一个referer头,但当加载和呈现生成的HTML并且TWebBrowser发送API Javascript的GET请求时,该请求不包含referer头,因此该请求被拒绝。我确认没有使用Fiddler发送referer头

看起来TWebBrowser只在实际导航到URL时发送referer头,而不是在发送GET请求时发送,就像从脚本元素加载API时一样

我不能使用Navigate2加载“网页”,因为没有服务器可以从中加载它


当TWebBrowser从一个流中加载它正在呈现的HTML时,有没有办法强制它在发出GET时包含一个特定的referer头?经过几个小时的搜索,我没有找到任何方法的提示。

在将HTML动态加载到TWebBrowser之前,请修改HTML,将
标记插入HTML的
中,以指示HTML最初来自的URL。然后,该URL用于解析相对URL、建立引用程序等