2011-01-01 22 views
0

私はhttpサーバーをコーディングする小さなプロジェクトをやっています。コードはhttpサーバーの黙示、ページが正しく表示されません

http://code.google.com/p/reactor/

で、現在のパズルは、JavaスクリプトやCSSでページを解析するように頼まれたときです。 httpサーバとして、それはちょうど(別のウェブサイトからコピーされた)ページを送信し、それは正しく解析されません。 (getCookie(場合

ראשיחדשות :簡単なHTMLページは私のFirefoxで、解析されているとき、それは、より複雑なページ(CSS + JavaScriptの)を解析するときただし、ページがすべてのように配線され、[OK]を示します'pais999'); varTopLayerCookieExpiredDays = 1; varToplayerLink = 'http://xads.z​​edo.com);} /ads2/c?a=239671;g=0;c=455000000;i=0;x=7168;n=455;s=0;k=http://www.pais.co.il/Pais/Games /Lotto/';varToplayerImpression='http://l4.zedo.com/log/p.gif?a=239671;c=455000000;x=7168;n=455;e=i;i=0;s= 0; z = '+ Math.random(); varToplayerBigPath =' pais/January2007/98one_toplayer.swf '; varToplayerSmallPath =' pais/January2007/98one_reminder.swf '; varToplayerBigWidth = 1005; varToplayerBigHeight = 500; varToplayerSmallWid第= 100; varToplayerSmallHeight = 100; varToplayerBigLeft =(0 == 0)resWidth/2-ToplayerBigWidth/2:resWidth/2-ToplayerBigWidth/2 + 0varToplayerBigTop = 0; varToplayerSmallLeft = resWidth-ToplayerSmallWidth-0; varToplayerSmallTop = 0; varSecondsToChangeBigToSmall = true; true:falsevarToplayerCookieName = 'NF999'; varTopLayerCookieExpiredDays = 1; varToplayerLink = 'http == 15;} elseif(getCookie(' NF999 ')== null){varisToplayerDouble = "True"; isToplayerDouble = ://xads.z​​edo.com/ads2/c?a = 238663; g = 0; c = 455000000; i = 0; x = 7168; n = 455; s = 0; k = http://www.new -pharm.co.il/SkiGame/?ToolID=OLJD8O';varToplayerImpression='http://l4.zedo.com/log/p.gif?a=238663;c=455000000;x=7168;n=455; varToplayerBigPath = 'NewFarm/Ski/995ONE_TopLayer_550x360.swf'; varToplayerSmallPath = 'NewFarm/Ski/995ONE_Reminder_100x100.swf'; varToplayerBigWidth = 550; varToplayerBigLeft = 100(0 == 0)?resWidth/2-ToplayerBigWidth/2:resWidth/2-ToplayerBigWidth/2 + 0varTo ( "divToplayerBig")。style.width = ToplayerBigWidth; $( "divToplayerBig")。これは、divToplayerBigTop = 0、varToplayerSmallLeft = resWidth-ToplayerSmallWidth-0、varToplayerSmallTop = 0、varSecondsToChangeBigToSmall = 15;} elseif(1 == 0){} $( "divToplayerBig" style.height = ToplayerBigHeight; $( "divToplayerBig")。style.left = resWidth/2-ToplayerBigWidth/2; $( "divToplayerSmall")。style.width = ToplayerSmallWidth; $( "divToplayerSmall")。style.height = ToplayerSmallHeight $ {"divToplayerSmall"} style.right = ToplayerSmallWidthvartopOff = 0; if(ToplayerBigTop> 0)ifOff = resHeight-ToplayerBigHeight + ToplayerBigTop; varisMain = false; #divToplayerBig {position:absolute; right:20px; bottom:1px;} #divToplayerBig {位置:固定;}#divToplayerSmall {位置:絶対;右:20px;下:10px;} body#divToplayerSmall {position:fixed;}ライブ|ロイターオンラインショッピング| ONETV | ONETV |גליצ 'ים| BigONE |טוטווייר|クレイジーワン|

ONE:פאר:לאהייתימוכנהלראותאותהמחייכת ראשי   חדשות  IF(getCookie( 'pais999')== NULL){varisToplayerDouble = "TRUE" HTMLのソースコードである

; isToplayerDouble =(isToplayerDouble == "True")?true:falsevarToplayerCookieName = 'pais999'; varTopLayerCookieExpiredDays = 1; varToplayerLink = 'http://xads.z​​edo.com/ads2/c?a = 239671; g = 0; c = 455000000; i = 0; x = 7168; n = 455; s = 0; k = http://www.pais.co.il/Pais/Games/Lotto/ '; varToplayerImpression =' http:// l4。 zedo.com/log/p.gif?a=239671;c=455000000;x=7168;n=455;e=i;i=0;s=0 ; varToplayerBigWidth = 100; varToplayerSmallWidth = 100; varToplayerSmallHeight = 100; varToplayerBigWidth = 100; varToplayerBigHeight = 500; varToplayerSmallWidth = 100; varToplayerSmallPath = 'pais/January2007/98one_reminder.swf'; ; varToplayerBigLeft =(0 == 0)?2つのToplayerBigWidth/2 + ToplayerBigWidth/2 + 0varToplayerBigTop = 0; varToplayerSmallLeft = resWidth-ToplayerSmallWidth-0; varTecayerSmallTop = 0; varSecondsToChangeBigToSmall = 15;} elseif(getCookie( 'NF999')== null){ vTopayerDouble = "True"; isToplayerDouble =(isToplayerDouble == "True")?true:falsevarToplayerCookieName = 'NF999'; varTopLayerCookieExpiredDays = 1; varToplayerLink = 'http://xads.z​​edo.com/ads2/c?a = 238663; k = http://www.new-pharm.co.il/SkiGame/?ToolID = OLJD8O '; varToplayerImpression = "0"; g = 0; c = 455000000; i = 0; x = 7168; n = 455; s = 'http://l4.zedo.com/log/p.gif?a=238663;c=455000000;x=7168;n=455;e=i;i=0;s=0;z='+Math .random(); varToplayerBigPath = 'NewFarm /スキー/ 995ONE_TopLayer_550x360.swf'; varToplayerSmallPath = 'NewFarm /スキー/ 995ONE_Reminder_100x100.swf'; varToplayerBigWidth = 550; varToplayerBigHeight = 360; varToplayerSmallWidth = 100; varToplayerSmallHeight = 100; varToplayerBigLeft =(0 = = 0)?resWidth/2-ToplayerBigWidth/2:resWidth/2-ToplayerBigWidth/2 + 0varToplayerBigTop = 0; varToplayerSmallLeft = resWidth-ToplayerSmallWi style.width = ToplayerBigWidth; $( "divToplayerBig")。style.height = ToplayerBigHeight; $( "divToplayerBig")$スタイルシートの幅を指定します。 style.left = resWidth/2-ToplayerBigWidth/2; $( "divToplayerSmall")。style.width = ToplayerSmallWidth; $( "divToplayerSmall")。style.height = ToplayerSmallHeight; $( "divToplayerSmall")。 (position:absolute; right:20px; bottom:1px;} body> div#divToplayerBig {position:toplayerBigTop> 0; if(ToplayerBigTop> 0)ifOp = ToHeight-ToplayerBigHeight + ToplayerBigTop; varisMain = false; #divToplayerBig {これは、ドキュメント内のすべての要素が自動的に更新されるようにするために使用されます。 .documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft))+ 'px');トップ:式((0-divToplayerBig.offsetHeight-topOff +(document.documentElement.clientHeight?document。 #divToplayerSmall {position:absolute; right:20px(documentElement.clientHeight:document.body.clientHeight)+(ignoreMe = document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop))+ ; bottom:10px;} body#divToplayerSmall {position:fixed;} div#divToplayerSmall {右:自動;下:自動;左:式( - 20-divToplayerSmall.offsetWidth +(document.documentElement.clientWidth?document.documentElement (0-divToplayerSmall.offsetHeight +(d​​ocument.body.scrollLeft:document.body.scrollLeft); + document.body.clientWidth)+(ignoreMe2 = document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft))+ 'px'); )+ 'px');} varisTopTrans =((ドキュメントの内容を保持していますか? ToplayerBigPath.indexOf( "transparent")> - 1)?false:true; varisRemTrans =(ToplayerSmallPath.indexOf( "transparent")> -1)?false:true; vartop1ses sion = 3; vartop2session = 5; InitToplayer(isTopTrans、isRemTrans); window.onload = StartToplayer;ライブ|ライブラリー| ONEבסלולרי| ONETV   |גליצ'ים| BigONE |טוטווינר|     CrazyONE   | תיראומהאסוליןעשהלמכביחיפה
19/01/07     18時43分

ליגתהעלבכדורסל:המשחקיםחוזריםליוםראשון
19/01/07     17時41分

    19:30

אליכהןלשחקניולקראתבני-יהודה

כותרותאחרונותצפובמייקללואיסמנצחבתחרותההטבעותבגמרהתיכונים
19/01/07ユーザー名:
19/01/07     16:49

ארצית:הפועלר"גניצחהאתהשקמה/רמתחן1:2、גםראשל"צניצחה
19/01/07     16:45

יובנטוסמעוניינתבכריסטוףמצלדר、שדורש2。5 Miliondolrlaonh
01/19/07    午後04時37分

Ligthal:ビット "riroslimttarhmhrb -19:30 Atzlmcbihrtzlih
01/19/07    午後02時32

Mcbif" ttarhmhrb -18:30 Athfoalcf "sbaorooh、Llag'obnini
1/19/07    午後2時45分

Hgrlhklhlhfoaliroslimbsminithiol「B:とNtsfilshltbit
01/19/07     14:37

Lighlaomit:Hfoaliroslimoahintzrtnf Rdobtiko 0:0
19/01/07     13時46



varswfPeleSmall = newSWFObject( "http://images.one.co.il/images/PeleEmulator/emulator_pelephone_01a.swf"、 "peleSmall"、160470、 "6"、 "#1 FFFFFF"); swfPeleSmall.addParam( "品質"、 "高い"); swfPeleSmall.addParam( "WMODE"、 "透明"); swfPeleSmall.write( "divPeleSmall"); varswfPeleBig = newSWFObject( " Http://images.one.co.il/images/PeleEmulator/emulator_pelephone_02d.swf","peleBig",400,470,"6","#FFFFFF");swfPeleBig.addParam("quality","high「); swfPeleBig.addParam( "WMODE"、 "透明"); swfPeleBig.write( "divWithBig")。


栄光:Lahiitimocnhlraotaothmhiict
Shrfarsifrhl- ONE Mhabrbmohhbrgaimsbhmcmathfsidhlttianhgolobin.hisralit、Snitzhhlbsof 1:2、Idahlmilhodot: "Hkhlhihnfla"

DisplayFlash( "W_S_round_border_pic.swf"、 "156"、 "201"、 "1"、「スタイル=位置:絶対「); Shrfarhozrtmhkbrmoliribth(ロイター)



Matsialon                                                     19/01/20077:6 Atahdhhisgimhgdolimslhcsgbrh 26
Shrfarrsmhhbokr(金):3,5:7,5:7 Alttianhgolobinhtzrftiihは、世界で23位。

ゲーム、Shihamorlhiarclfnotbokrbaostrlih、Ndhhakbhgsmofarshfsidhbglltnaimzghaooirbabr、Hslimhkambkscoloaofi。

Ahrishfsidhathmarchhrasonh、Hihnrahsfarbdrchbtohhhhotzh.lftafarhtaorrhohtzlihhlhsootl -1:1 Athmarcot.bsahhahronhhianitzlhfamiimmmatz'fointcsnabkhnoasotmolhtzrftiih.bsofzhhstlmlh。

Farhbtihhathhaflhlslbsminithgmr(16位)、Smtfgosbsbtblilhatsbtlnhkozntzobhhmdorgt 3大会、Sgbrhhbokralmrihkrilnko。

Faramrhl-

(FirefoxやページのソースHTMLでページのプレゼンテーションの一部だけ)

なぜそれが起こっているのでしょうか? HTTPレスポンスにmiddingは何ですか?

StringBuffer tResponse = new StringBuffer(); 
     tResponse.append("HTTP/1.1 200 OK\n"); 
    tResponse.append("Date: "+new Date().toString() +'\n'); 
    tResponse.append("server: http-reactor/0.1-dev\n"); 
    tResponse.append("last-Modified:"+ d.toString() +'\n'); 
    tResponse.append("Content-Type: text/html; charset=windows-1255\n"); 
    tResponse.append("Accept-Language: he; q=1.0, en; q=0.5:); 
    tResponse.append("Content-Length: "+tFileContent.length()+'\n'); 
    tResponse.append('\n'); 
    tResponse.append(tFileContent); 

    public StringBuffer FetchData(String FileName) throws FileNotFoundException{ 
    StringBuffer tFileContent = new StringBuffer(); 
    if (FileName.contains("../")) 
     throw new SecurityException(); 
    if (FileName.equals("/")) 
     FileName = "\\index.html"; 
    FileName.replace('/', '\\'); 
    File f = new File(_root + FileName); 
    Scanner scanner = new Scanner(f); 
    while(scanner.hasNext()) 
     tFileContent.append(scanner.next()); 
    return generateResponse(tFileContent,f.lastModified()); 
} 

private StringBuffer generateResponse(StringBuffer tFileContent, long l) { 
    StringBuffer tResponse = new StringBuffer(); 
    Date d = new Date(l); 
    tResponse.append("HTTP/1.1 200 OK\n"); 
    tResponse.append("Date: "+new Date().toString() +'\n'); 
    tResponse.append("server: http-reactor/0.1-dev\n"); 
    tResponse.append("last-Modified:"+ d.toString() +'\n'); 
    tResponse.append("Content-Type: text/html; charset=windows-1255\n"); 
    tResponse.append("Accept-Language: he; q=1.0, en; q=0.5:); 
    tResponse.append("Content-Length: "+tFileContent.length()+'\n'); 
    tResponse.append('\n'); 
    tResponse.append(tFileContent); 
    return tResponse; 
} 
+1

"コード"の書式設定の代わりに "引用符"の書式設定を使用しているようですが、これはあなたの例にはあまり適していませんが、例はあまりにも大きすぎます。発生している問題を示す最小限のケースを見つけてください。これは、あなたのHTMLにJSとCSSを混在させることによって引き起こされたと考えていると言います。そのため、それぞれ短い行のHTMLページを作ってください。また、あなたの問題は 'tFileContent'がどのように設定されているかに関係している可能性がありますが、あなたはそれを設定するコードやそのタイプを表示していません。 –

+0

代替ストリームハンドラのソースコントロール – none

答えて

1

なぜあなたは最初のファイルをスキャンする必要があります。ただ、(あなたの例では窓-1255)正しいエンコーディングで入力ストリームを開き、コンテンツをダウンストリーム。ところで

。あなたはHTTPサーバを書いている場合、あなたは、文字列を扱うないことに注意する必要があります。だから、StringBufferのは、とにかく

+0

のリコメンデーションへのリンクがありますか? – none

+0

代替ストリームハンドラとはどういう意味ですか?私はあなたがファイルの内容をストリーミングしたいと思う。 FileInputStreamを開き、1バイトごとにOutputStreamにコピーします。 – mtraut

0

良い選択ではありませんあなたは正しくContent-Typeヘッダを設定する必要があることができますか?あなたがイメージをロードするときも、StringBufferのはあなたに迷惑を与えるだろう。

1

jspページで応答コンテンツタイプをUTF-8に設定すると、メタコンテンツタグが役立ちます。

response.setContentType( 'utf-8');

tResponse.append( "Content-Type:text/html; charset = utf-8 \ n");

関連する問題