2017-06-12 2 views
0

J'ai écrit un code pour travailler comme un compteur Web. Il génère une sortie javascript dans OutPutStream afin que je puisse utiliser le script dans un autre site Web pour lui donner un compteur de site Web gratuit. Le problème est que lorsque je veux obtenir le référant, il renvoie la page où le script est placé et non le véritable référent. voici mon code:Comment obtenir référent url parent en C#

code html dans le corps:

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

et les 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); 
    } 

le problème est: laisse supposer que je suis en xyz.com (autre site) puis je clique sur un lien et je vais sur zzz.com/1.html (mon site). La page zzz.com/1.html contient le script que j'ai mentionné plus tôt. Je veux connaître le referrer zzz.com/1.html qui est xyz.com mais ma page C# me montre zzz.com comme le referrer qui a du sens. Comment puis-je obtenir zzz.com/1.html referrer?! J'espère que l'explication a été suffisante.

Merci

+0

Vous devez créer une fonction JavaScript et utiliser votre script prenez le referer, parce que le fichier script a été appelé par zzz.com pas xyz.com, où zzz.com a été appelé par xyz.com – Krishna

+0

pourriez-vous s'il vous plaît écrire un échantillon pour moi?! Je suis frustré ... –

+0

Avez-vous le contrôle sur zzz.com/1.html? – Krishna

Répondre

0

Essayez de passer referer dans la chaîne de requête comme ci-dessous

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

maintenant dans l'utilisation de code de cette chaîne de requête

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); 
}