Firefox & I.E.

giovedì 16 luglio 2009 - 19.15

maureen1953 Profilo | Newbie

Salve a tutti.
Ho una pagina aspx creata sulla fasariga di una precedente e funzionante senza problemi che dovrebbe rendere visibile tramite iframe le schede di prodotti residenti su un altro sito; questo è il codice:
<asp:TemplateField HeaderText="Scheda - Fiche"><ItemTemplate>
<iframe src="<%# eval("scheda") %>" width="550" height="800" frameborder="0" scrolling="yes" id="iframe" style="border: 2px solid green">
</iframe>
</ItemTemplate>
</asp:TemplateField>
dove scheda corrisponde ad un campo del database, come per esempio:

http://194.185.157.5/area_informativa/ricerca_schede/risultati_std_SW.asp?id_scheda=72836&cdc=000057

(Link al quale non si accede direttamente in quanto deve provenire da http referrer accettato - dal mio sito, insomma)

se sostituisco <%# eval("scheda") %> con il link in chiaro, non funziona neppure (ovvero ottengo costantemente un messaggio che mi dice che la pagina non è al momento disponibile, di riprovare più tardi) Non funziona neanche con un banale riferimento (a href ... ). Questo verificato su più computer;
Invece, con Firefox, le schede sono tranquillamente visibili.

Non so come risolvere: avreste forse qualche suggerimento utile?
Ecco un link per eventualmente verificare la differenza di comportamento sui due browers:
http://www.alberti.it/ListMarEspE.aspx?Category='BIA'
Grz mille!

freeteo Profilo | Guru

>(Link al quale non si accede direttamente in quanto deve provenire
>da http referrer accettato - dal mio sito, insomma)
Cosa viene composto a livello di HTML (lo vedi dal source della pagina una volta mandata in esecuzione sul browser) ?
Probabilmente gli apici in realtà chiudono il tag html e quindi ti "sporcano" l'hyperlink corretto...



>Non so come risolvere: avreste forse qualche suggerimento utile?
>Ecco un link per eventualmente verificare la differenza di comportamento
>sui due browers:
>http://www.alberti.it/ListMarEspE.aspx?Category='BIA'
attenzione! qui passi direttamente un pezzo di query nella querystring, una follia, un buco di sicurezza totale....come minimo usa il valore con i parametri di del SqlCommand per fare una query tipo :
select ... from... where Category=@Category
e quindi salvarti dal fatto che qualcuno possa mettere del codice come:
"''; delete from tabella"
anche se non fosse possibile è cmq una cosa da non fare mai, soprattutto su siti web che sono accessibili da tutti e quindi anche dai maleintenzionati...

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

maureen1953 Profilo | Newbie

Grazie molte per la risposta; a livello HTML, viene questo:

<tr style="color:#004000;background-color:LimeGreen;font-family:verdana;font-size:7pt;">
<td align="center" style="font-weight:bold;">RUF2-J8GS-BK/B</td><td align="left">CHIAVETTA TYPE J 8GB CON CONNETTORE USB TURBO RETRAIBILE </td><td align="left">RUF2-J8GS-BK/B</td><td align="left">Buffalo Technology</td><td>
<span id="ctl00_Content1_GridView1_ctl03_Label1" style="font-weight:bold;">€ 22,68</span>
</td><td>
<input type="image" name="ctl00$Content1$GridView1$ctl03$Button3" id="ctl00_Content1_GridView1_ctl03_Button3" src="images/scheda.gif" style="border-width:0px;" />
</td>
</tr>

corrispondente a:

Code Descrizione - Description Modello - Model Marca - Brand - Marque Prezzo - Price - Prix scheda e Foto
RUF2-J4GS-BK/B CHIAVETTA TYPE J 4GB CON CONNETTORE TURBO USB RETRAIBILE RUF2-J4GS-BK/B Buffalo Technology € 13,68 e l'
<asp:ImageButton ImageURL="images/scheda.gif" runat="server" OnCommand="ViewDetails" CommandName='<%# Container.DataItem("code") %>' ID="Button3"/> (lo scrivo così perchè non riesco a copiarlo direttamente)

Ho appurato che c'è differenza di comportamento tra I.E. e Firefox; tuttavia, visto che la funzione che ho usato per visualizzare la scheda in

<asp:GridView id="Image" Runat="Server" DataSourceID="Catalogo"
AutoGenerateColumns="False" border="0" HorizontalAlign="Justify">
<columns>
<asp:TemplateField HeaderText="Scheda - Fiche"><ItemTemplate>
<iframe src="<%# eval("scheda") %>" width="570" height="650" frameborder="0" scrolling="yes" id="iframe" style="border: 2px solid green">

</iframe>

</ItemTemplate>
</asp:TemplateField>
</columns></asp:gridview>


è:
Sub ViewDetails(ByVal Src As Object, ByVal Args As CommandEventArgs)
Dim Codice As String = Args.CommandName
Dim SQLString As String
SQLString = "SELECT linkscheda as scheda from disposchede where disposchede.Codice='" & Codice & "'"
Catalogo.SelectCommand = SQLString
Image.Visible = True
End Sub

deduco che l'uso di javascript dipenda dal fatto di usare un updatepanel di Ajax; ma anche usando un semplice panel, ottengo lo stesso risultato; ho provato a cercare qualche workaround, ma non ne trovo.
Se richiamo il link in una semplice pagina html così:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>

<A href="http://194.185.157.5/area_informativa/ricerca_schede/risultati_std.asp?id_scheda=30169&SchedaNew=1&cdc=6030883">scheda</A>


</body>
</html>


vedo la scheda, ma nel momento in cui uso lo stesso link
<asp:TemplateField HeaderText="scheda e Foto">
<ItemTemplate>

<A href="http://194.185.157.5/area_informativa/ricerca_schede/risultati_std.asp?id_scheda=30169&SchedaNew=1&cdc=6030883">scheda</A>

</ItemTemplate>
</asp:TemplateField>
nella gridview della mia pagina aspx, non la vedo più. Sono un poco disperata: non posso condizionare i miei visitatori all'utilizzo di Firefox.
Grazie anche per la segnalazione circa SQL Injection.

freeteo Profilo | Guru

Ciao,
non mi hai messo il codice HTML della pagina relativo al tag "iframe" che è il nocciolo della questione ...secondo me viene messo qualche apice in più o qualcos'altro che sbaglia il codice HTML che il browser deve interpretare, probabilmente firefox contempla questa situazione e la fa "passare" ugualmente...
Altri browser? Chrome, Safari, Opera, come si comportano a riguardo?

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

maureen1953 Profilo | Newbie

Allora, il codice HTML è:

<asp:GridView id="Image" Runat="Server" DataSourceID="Catalogo"
AutoGenerateColumns="False" border="0" HorizontalAlign="Justify">
<columns>
<asp:TemplateField HeaderText="Scheda - Fiche"><ItemTemplate>
<iframe src="<%# eval("scheda") %>" width="570" height="650" frameborder="0" scrolling="yes" id="iframe" style="border: 2px solid green">

</iframe>

</ItemTemplate>
</asp:TemplateField>
</columns></asp:gridview>

dove scheda corrispnde al campo del database Access linkscheda selezionato As scheda che corrisponde per esempio esattamete a:
http://194.185.157.5/area_informativa/ricerca_schede/risultati_std.asp?id_scheda=30169&SchedaNew=1&cdc=6030883">scheda</A>
senza apici.

Mi è stato detto da altre fonti che I.E. non passa l'http referrer via Javascript, mentre Firefox, sì, e di cercare dei workaround in rete, che ce ne sono diversi. Non i sembra che però si utilizzto Javacript; ho provato a sostiuire l'updatpanel d Ajax con un semplice asp:panel senza successo.

Quanto agli altri brower, Safari e Opera (e anche Chrome) visualizzano le schede solo quando lo fa anche I.E. (che appunto, qualche volta le fa vedere, quidi non ha nemmeno un comportamento costante), mentre con Firefox, si vedono sempre. Tuttavia, non posso condizionare i miei clienti ad usar Firefox.
Come potrei risolvere?
Grazie infinite.

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5