我$_SERVER['HTTP_REFERER']在我的应用程序中使用了变量(使用PHP).在Firefox上面,变量很重要.但我发现这$_SERVER['HTTP_REFERER']不适用于Microsoft Internet Explorer 8.我也知道HTTP_REFERER变量不适用于MSIE8和MSIE7.
请给我你的建议,如何使用$_SERVER['HTTP_REFERER']变量摆脱MSIE7/8或是否有任何其他$_SERVER['HTTP_REFERER']变量的替代品
谢谢你的建议.
-Pravin.
php http-referer internet-explorer httprequest internet-explorer-8
在我的应用程序中,我允许用户在嵌入式UIWebView中打开外部页面.我是否可以设置与该请求一起发送的referer标头?当用户打开这些外部页面时,我希望我的应用程序获得"信誉".
我有一个网址
domain.com/a
重定向到
domain.com/controller/action/a .
如何在我的domain.com/controller/action/a操作中获取引荐来源(即domain.com/a)?
一种选择是将引用域添加为参数.
domain.com/controller/action/a?referral=domain.com/a .
有没有办法获得引用者而不传递旧的引用者作为参数.就像我们会得到的那样**request.referrer**.request.referrer似乎不适用于重定向的URL.
我正在使用Ruby on Rails进行开发.
如果用户点击链接,有没有办法让webbrowser提交额外的HTTP标头?
背景:在我们的环境中,每个http请求在服务器端都有唯一的ID.请参阅https://serverfault.com/questions/797609/apache-x-request-id-like-in-heroku
如果您的Web应用程序收到http请求,我想知道之前页面是哪个页面.http referrer是不够的,因为用户可以在他的浏览器中使用多个选项卡.
我想避免将丑陋的request-id放入从浏览器发送到服务器的每个GET请求中.到目前为止,我们的网址很好.
我首选的解决方案是一些JavaScript魔术,它将当前页面的请求ID添加到下一个http请求中.
详细步骤:
我的目标是跟踪关系"123 - > 456".以上解决方案只是实现目标的策略.其他策略是受欢迎的.
我们使用web框架django.但AFAIK在这方面确实很重要.
用户可以在浏览器中使用多个选项卡
我详细说明了匹配解决方案的含义.来自一个用户的请求序列不能解决问题.
使用多个选项卡:
我想知道看到两个序列:
A -> C -> D
Run Code Online (Sandbox Code Playgroud)
和
B -> E
Run Code Online (Sandbox Code Playgroud) 我觉得我已经做了很多次了,但我不能为我的生活弄清楚出了什么问题.
Default.aspx的:
protected void Page_Load(object sender, EventArgs e)
{
var r1 = Request.UrlReferrer; // null
var r2 = Request.ServerVariables["HTTP_REFERRER"]; // null
}
Run Code Online (Sandbox Code Playgroud)
SingleSignOn.aspx:
protected void Page_Load(object sender, EventArgs e)
{
Response.Redirect("/");
}
Run Code Online (Sandbox Code Playgroud)
如果我在URL中键入"/SingleSignOn.aspx",它会重定向到Default.aspx,但引用者为空.
我在这里失踪了什么?
我试图做什么(这是一个简化的例子),在任何页面上,我将有一些JavaScript来做以下事情:
window.location.replace('~/SingleSignOn.aspx');
Run Code Online (Sandbox Code Playgroud)
你猜对了,用户签名,然后重定向到主页.
但是我需要在JavaScript中构建逻辑,如果我们刚从那里出来,就不会重定向到SingleSignOn.aspx页面.
引荐来源是否仅由实际链接用户点击填充?
那怎么办呢?我不想使用QueryString,因为我不想在URL中看到它.
我能想到的唯一其他选择是Session.
请帮忙.=(
嗨,我正在尝试获取推荐人网址,但当访问者从Paypal访问网站时,它不起作用
$ref = $_SERVER['HTTP_REFERER'];
echo $ref;
Run Code Online (Sandbox Code Playgroud)
如果访问者来自Paypal的网站,有没有一种简单的方法来获取paypal网址?
编辑和澄清: 我不打算在Paypal网站上进行任何特殊设置(包括但不限于:IPN,设置返回URL,付款数据传输或Paypal网站上的任何其他特殊设置)我只是当访问者从Paypal访问该站点时,查看是否获得URL引用,关于事务状态(如果有的话).
正如鲍勃从手册中指出的那样
$ _SERVER是一个包含标题,路径和脚本位置等信息的数组.此阵列中的>条目由Web服务器创建.无法保证每个Web服务器都能提供这些服务; 服务器可以省略一些,或提供此处未列出的其他服务器.
因此,唯一的问题是 - 如果没有在paypal网站上设置某些内容,是否有任何解决方法?
我正在开发一个Django Web应用程序,其中(除其他外)需要处理使用POST请求发送的事务状态信息.
除了支付网关支持的HTTP安全性之外,我的视图还会检查request.META['HTTP_REFERER']条目settings.py以防止有趣的业务:
if request.META.get('HTTP_REFERER', '') != settings.PAYMENT_URL and not settings.DEBUG:
return HttpResponseForbidden('Incorrect source URL for updating payment status')
Run Code Online (Sandbox Code Playgroud)
现在我想弄清楚如何测试这种行为.
我可以很容易地产生故障; HTTP_REFERER是(可预测)None正常的页面加载:
def test_transaction_status_succeeds(self):
response = self.client.post(reverse('transaction_status'), { ... })
self.assertEqual(response.status_code, 403)
Run Code Online (Sandbox Code Playgroud)
但是,如何假冒成功提交?我已经尝试过HTTP_REFERER进入extra,例如 self.client.post(..., extra={'HTTP_REFERER': 'http://foo/bar'}),但这不起作用; 该视图显然仍然看到一个空白标题.
测试客户端是否支持自定义标头?如果没有解决方法吗?我正在使用Django 1.1,如果可能的话,我宁愿不升级.
通常,在搜索答案时,我发现某些网站会允许您阅读他们提供的信息(例如,引用者是google.com).但是,如果您直接链接到信息,它将无法使用.
我正在寻找的是最小的PHP脚本,它将设置我选择的引用者和目的地,如下所示:
http://example.com/ref_red.php?referer=http://google.com/&end=http://example.net/
Run Code Online (Sandbox Code Playgroud)
笔记:
http://example.com/some/rr/print.pl?document=rr.注意:根据回复中的建议,我添加此内容.该脚本本身不是完整的代理.仅最初的HTTP请求将被代理的(如图像等不后续请求)唯一目的设置的引用者.
想象一下,您所在的网页上有一个网址,其网址包含一个片段(后面的部分#),然后点击一个链接转到另一个页面.大多数浏览器会将原始页面的URL发送到Referer标头中的服务器.我想知道的是URL片段是否包含在此片段中.
我已经看到了野外的各种行为,所以这可能是浏览器特定的.有谁知道哪些浏览器做什么?HTTP规范对此有何评论?
http-referer http cross-browser fragment fragment-identifier
我正在用Selenium编写一些测试,并注意到,Referer标头中缺少该测试。我编写了以下最小示例,以使用https://httpbin.org/headers进行测试:
import selenium.webdriver
options = selenium.webdriver.FirefoxOptions()
options.add_argument('--headless')
profile = selenium.webdriver.FirefoxProfile()
profile.set_preference('devtools.jsonview.enabled', False)
driver = selenium.webdriver.Firefox(firefox_options=options, firefox_profile=profile)
wait = selenium.webdriver.support.ui.WebDriverWait(driver, 10)
driver.get('http://www.python.org')
assert 'Python' in driver.title
url = 'https://httpbin.org/headers'
driver.execute_script('window.location.href = "{}";'.format(url))
wait.until(lambda driver: driver.current_url == url)
print(driver.page_source)
driver.close()
Run Code Online (Sandbox Code Playgroud)
哪些打印:
<html><head><link rel="alternate stylesheet" type="text/css" href="resource://content-accessible/plaintext.css" title="Wrap Long Lines"></head><body><pre>{
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "en-US,en;q=0.5",
"Connection": "close",
"Host": "httpbin.org",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:64.0) Gecko/20100101 Firefox/64.0"
}
}
</pre></body></html>
Run Code Online (Sandbox Code Playgroud)
所以没有 …
http-referer ×10
php ×3
django ×2
http ×2
http-headers ×2
asp.net ×1
fragment ×1
httprequest ×1
ios ×1
iphone ×1
javascript ×1
paypal ×1
python ×1
referrer ×1
selenium ×1
testing ×1