I have a Windows Media Player OBJECT in a HTML page. In that I refer to a playlist and inside of that I have ASP-links that points to MP3 files. Its all called from ASP on a IIS server.
I want to check from where the music is being called from with a call to
request.servervariables.item("HTTP_USER_AGENT")
But the strange thing is that it returns DIFFERENT results all the time... Some times it returns that its called from the IE browser, other times from Windows Media Player: E.g.: "Windows-Media-Player" "NSPlayer" "WMFSDK" "MSIE"
And also when I check the IIS logfile: There seems to be no logic in which one is returned. Nor which order they come in or if all of them or just some of them are present.
Any ideas / explanations? I want to be able to ensure that the music is called from the right user agent, so they cannot access the music from other agents. For that I believe I need a reliable user_agent return value.
Well, it depends on which application your users use. It could be an embedded application, played directly in windows media player, played with an extension to Firefox or played in an older version of IE... So first of, i would explain it with different users with different setups...
Sorry, det var på engelsk, det var fordi jeg kopierede den far et andet forum, men vi kan bare fortsætte på dansk.
Der er kun een bruger og det er mig! Dvs. det er et kontrolleret test-setup, hvor jeg altså kalder nøjagtigt det samme hver gang! Og jeg gør det fra en Windows XP computer, med IE og WMP embeddd i HTML siden.
Så 1000 krs spørgsmålet går på, hvorfor i himlens navn returnerer den ikke bare WMFSDK "HVER" gang eller "Windows-Media-Player" eller "MSIE" HVER gang?
Når jeg kigger i loggen, så nogle gange er det een af dem. Andre gange en anden, og andre gange igen flere af dem! Men fælles er at når man liiige tror der er system i det, så falder det til jorden igen forde mønsteret ændrer sig!
Jeg har også checket det med en IF-sætning i koden at den f.eks. KUN måtte spille hvis det var een af dem, men så kunne den kun afspille nogle gange.
kunne det være at den ene indgang i loggen var når du henter asp linket, den anden når du buffer det, og den sidste når du henter "andet indhold" så som navn på nummer?
Men altså det er i niveau 5 jeg har et check med en IF-sætning på USER_AGENT vha.
request.servervariables.item("HTTP_USER_AGENT")
Men jeg begriber ikke hvorfor man ikke kan lave et troværdigt check, således at man kan udelukke hentning fra andre steder..?
Hvis jeg bare udelukker een af enten Windows-Media-Player, MSIE eller WMFSDK, så kan den ikke hente lydfilen hver gang fra samme sted nemlig min IE browser!
Og hvad er "NSPlayer" som den også returnerer nogle gange?
DIM a a = request.servervariables.item("HTTP_USER_AGENT") IF (InStr(a, "Windows-Media-Player") > 0) OR (InStr(a, "WMFSDK") > 0) THEN Call DownloadFile(strPath) End If
Private Sub DownloadFile(file) Dim strAbsFile Dim strFileExtension Dim objFSO Dim objFile Dim objStream
strAbsFile = file Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strAbsFile) Then Set objFile = objFSO.GetFile(strAbsFile) Response.Clear Response.AddHeader "Content-Disposition", "attachment; filename=" & objFile.Name Response.AddHeader "Content-Length", objFile.Size Response.ContentType = "audio/mp3" Set objStream = Server.CreateObject("ADODB.Stream") objStream.Open '-- set as binary objStream.Type = 1 '-- load into the stream the file objStream.LoadFromFile(strAbsFile) '-- send the stream in the response Response.BinaryWrite(objStream.Read) objStream.Close Set objStream = Nothing Set objFile = Nothing End If Set objFSO = Nothing End Sub
Its working most of the times, but then for some MP3 files, for some strange reason, it wont return the file, and thats because the http_user_agent suddently returns "MSIE" or "NSPlayer". I have also tried the other way around.. with just checking for "MSIE", but then again, the problem was then just reverse.
Det er meget almindeligt, at Media Player identificerer sig selv som NSPlayer og før i tiden som NetShowPlayer. Du kan vel bare spørge på de tre-fire strenge, den kan finde på at returnere
Jamen hvis jeg tillader det hele, så tillader jeg jo også at man kan hente det uanset om man henter fra IE WMP eller min (WMP)player indbyggt/embbeded i IE
Og det er jo kun det sidste jeg vil tillade. IKKE at den kan hentes fra en standalone WMP eller alm. IE browser url.
Der må findes en forklaring et sted for hvorfor den er forvirret og ikke kan returnere den samme streng i alle tilfælde.. når det ovenikøbet er den selvsamme maskininstallation og IE, WMP der kalder programmet hver gang.
hvorfor vil du begrænse folk til dette? pga. reklame indtægter på siden? For i så fald kan du jo bare ligge interaktivt indhold ind på siden. Eller endnu nemmere, bare bruge en flash player istedet, da de er noget sværere at bruge stand-alone....
Jeg sætter stor pris på at I kommer med forslag, men vil I ikke gerne holde Jer til emnet.. Hvorfor returnerer HTTP_USER_AGENT forskellige resultater i et fuldstændigt homogent setup?
Jeg er ikke ude i at skulle indlægge reklamer, skifte til Flash eller alt muligt andet pga. ovenstående problematik
Prøv at høre her - du stiller med en problemstilling, som vi prøver at give den en løsning på!
Wmp vælger givetvis at svare forskellige ting, alt efter for godt befindende. Dette kan du ikke umiddelbart ændre på, da du mener at du har en 100% homogen testopsætning og stadig får variable svar. Det betyder at du ikke kan løse det problem ved at sikre dig ensartede svar, men derimod bør lede efter en løsning der tager højde for de problemstillinger der er.
Men har du behov for at vide PRÆCIST dette, bør dit spørgsmål være dette og ikke både dette og: I want to be able to ensure that the music is called from the right user agent, so they cannot access the music from other agents. For that I believe I need a reliable user_agent return value.
Opera har i mange år i sin standard opsætning udgivet sig for at være Explorer (i UserAgent) - men også som noget andet, alt efter den opsætning, brugeren har valgt. UserAgent indeholder ikke nødvendigvis det, man forventer ;o)
Om dit setup er homogent, har vi jo kun din påstand at bedømme udfra. Derfor bad jeg allerede i kommentar #6 om at se dit HTML-dokument, men det har du stadig ikke fundet interessant at fremvise. Man kunne derfor passende spekullere over, hvem det egentlig er, der holder sig til emnet i denne tråd ;o)
Det er næppe sådan fat, at samme player i samme version af samme browser og på samme platform udgiver sig for noget forskelligt - men uden noget somhelst frontend kode, kan det være svært at gætte sig frem til, hvor årsagen til dine oplevelser skal findes.
Sorry, jeg så det bare som kode og drog den slutning, at DET du vel måtte være interesseret i at se, var dér hvor checket bliver lavet - altså i ASP-koden, hvor det er at HTTP_USER_AGENT returnerer forskellige svar. Og den gav jeg dig. :)
Jeg kan & kunne ikke se det interessante i andet kode?
Det er denne kode, der implementerer dit player objekt, som sætter User-Agent feltet i HTTP-headeren, så det er såmænd den eneste relevante kode, du kan vise ;o)
Hvis du er 100% sikker på, de forskellige User-Agents alle bliver sat af samme IE-version på samme maskine, har jeg ikke nogen forklaring.
Hvis jeg var dig, ville jeg afgjort lave en player i Flash. Så ville du undgå dine nuværende problemer og samtidig sørge for, at Mac ejere også kan høre musikken =)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.