2017-06-12 2 views
0

Ich schrieb einen Code, um als Web-Zähler zu arbeiten. Es generiert JavaScript-Ausgabe in OutPutStream, so dass ich das Skript in einer anderen Website verwenden kann, um es einen kostenlosen Website-Zähler zu geben. Das Problem ist, dass, wenn ich den Referrer erhalten möchte, es die Seite zurückgibt, auf der das Skript platziert ist, nicht die tatsächliche Referrer. hier ist mein Code:Wie Eltern-URL-Referrer in c bekommen #

HTML-Code in Körper:

<script type="text/javascript" language="javascript" src="counter.aspx?siteid=2"></script> 

und die counter.aspx.cs:

using System; 
    using System.Collections.Generic; 
    using System.IO; 
    using System.Linq; 
    using System.Net; 
    using System.Web; 
    using System.Web.UI; 
    using System.Web.UI.WebControls; 


    public partial class counter : System.Web.UI.Page 
    { 

     protected void Page_Load(object sender, EventArgs e) 
     { 

      Response.ContentType = "text/javascript"; 
       UICulture = "en-US"; 
       Culture = "en-US"; 
       int siteid = int.Parse(Request.QueryString["siteid"].ToString()); 
       string pubIp = new System.Net.WebClient().DownloadString("https://api.ipify.org"); 
       var ipResponse = GetCountryByIP(pubIp); 
       HttpBrowserCapabilities browse = Request.Browser; 
       string platform = browse.Platform; 
       string browsername = browse.Browser; 
Counter cnt = new Counter(); 
      var counter = cnt.GetCounter(siteid, DateTime.Now, pubIp, Request.UrlReferrer.ToString(), platform, browsername, "", ipResponse.Country); 
        string text = "document.write('<div id=\"ShortCounter\" style=\" margin: 0px auto;width: 100px;min-height: 100px;font-family: Tahoma;font-size: x-small;background-color:" + counter.BackColor + ";color:" + counter.color + ";border:" + counter.BorderSize + "px " + counter.BorderStyle + " " + counter.BorderColor + ";\">" + 
      "<div style=\"padding: 8px;\">" + 
       "You Are Visitor Number:<br />" + 
       counter.CounterNumber.ToString("N0") + 
       "<br />" + 
       "Today" + 
      "<br />" + 
       counter.Today.ToString("N0") + 
       "<br />" + 
       "This Week" + 
      "<br />" + 
       counter.ThisWeek.ToString("N0") + 
       "<br />" + 
       "This Month" + 
      "<br />" + 
       counter.ThisMounth.ToString("N0") + 
       "<br />" + 
      "</div>" + 
      "<div style=\"width: 100%; background-color: darkred; text-align: center; padding-top: 2px; padding-bottom: 2px;\">" + 
       Request.UrlReferrer.ToString() + 
      "</div>');"; 

        byte[] bytes = System.Text.Encoding.UTF8.GetBytes(text); 

        Response.OutputStream.Write(bytes, 0, bytes.Length); 
    } 

das Problem: Nehmen wir an, dass ich in xyz.com (andere Seite) und dann klicke ich auf einen Link und gehe zu zzz.com/1.html (meine Seite). Die zzz.com/1.html Seite enthält das Skript, das ich bereits erwähnt habe. Ich möchte den zzz.com/1.html Referrer kennen, der xyz.com ist, aber meine C# Seite zeigt mir zzz.com als den Referrer, der Sinn ergibt. Wie bekomme ich zzz.com/1.html Referrer? Ich hoffe, Erklärung hat gereicht.

Dank

+0

Sie und Ihr Skript verwenden, um schnappen Sie sich den Referer, weil die Skriptdatei von zzz.com nicht xyz.com aufgerufen wurde, wo zzz.com von xyz.com – Krishna

+0

genannt wurde, würden Sie bitte ein Beispiel für mich schreiben?! Ich bin frustriert ... –

+0

Haben Sie die Kontrolle über zzz.com/1.html? – Krishna

Antwort

0

Try eine JavaScript-Funktion erstellen muss passieren referer in Query-String, wie unten

<script language="JavaScript" type="text/javascript"> 
var referer = document.referrer; 
$.getScript("counter.aspx?siteid=2&referedby="+referer); 
</script> 

Jetzt im Code verwenden diese Abfrage-String

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Net; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 


public partial class counter : System.Web.UI.Page 
{ 

    protected void Page_Load(object sender, EventArgs e) 
    { 

     Response.ContentType = "text/javascript"; 
      UICulture = "en-US"; 
      Culture = "en-US"; 
      int siteid = int.Parse(Request.QueryString["siteid"].ToString()); 
      string referedby = Request.QueryString["referedby"]; 
      string pubIp = new System.Net.WebClient().DownloadString("https://api.ipify.org"); 
      var ipResponse = GetCountryByIP(pubIp); 
      HttpBrowserCapabilities browse = Request.Browser; 
      string platform = browse.Platform; 
      string browsername = browse.Browser; 
Counter cnt = new Counter(); 
     var counter = cnt.GetCounter(siteid, DateTime.Now, pubIp, referedby, platform, browsername, "", ipResponse.Country); 
       string text = "document.write('<div id=\"ShortCounter\" style=\" margin: 0px auto;width: 100px;min-height: 100px;font-family: Tahoma;font-size: x-small;background-color:" + counter.BackColor + ";color:" + counter.color + ";border:" + counter.BorderSize + "px " + counter.BorderStyle + " " + counter.BorderColor + ";\">" + 
     "<div style=\"padding: 8px;\">" + 
      "You Are Visitor Number:<br />" + 
      counter.CounterNumber.ToString("N0") + 
      "<br />" + 
      "Today" + 
     "<br />" + 
      counter.Today.ToString("N0") + 
      "<br />" + 
      "This Week" + 
     "<br />" + 
      counter.ThisWeek.ToString("N0") + 
      "<br />" + 
      "This Month" + 
     "<br />" + 
      counter.ThisMounth.ToString("N0") + 
      "<br />" + 
     "</div>" + 
     "<div style=\"width: 100%; background-color: darkred; text-align: center; padding-top: 2px; padding-bottom: 2px;\">" + 
      Request.UrlReferrer.ToString() + 
     "</div>');"; 

       byte[] bytes = System.Text.Encoding.UTF8.GetBytes(text); 

       Response.OutputStream.Write(bytes, 0, bytes.Length); 
}