2011-12-14 14 views
2

私はHttpListenerをとして、コンソールアプリケーションプログラムを書くとjQueryを通してそれを使用して、それが完全に真働いているが、私はhttpsにそれを変換したいが、私はここでの手順HttpListenerを発行し

を知らないんだが、私のコード です私は、いずれかのこれはJScript.jsで書かれているjQueryのコードは、これはhtmlページ

ある

$(function() { 
    //this code is executed when the page's onload event fires 
    $("#runSample1").click(function() { 
     var userNameJS = $("#uName").val(); 
     var passwordJS = $("#passw").val(); 
     $.post("http://localhost:80/", { userName: userNameJS, password: passwordJS }, function (data) { 
      alert(data); 
     }); 

    }); 
}); 

ファイルである

すぐにそれを解決することを願って

<!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> 
    <script type="text/javascript" src="Scripts/jquery-1.4.1.js"> </script> 

    <script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"> </script> 
    <script type="text/javascript" src="Scripts/JScript.js"></script> 
    <script type="text/javascript" src="Scripts/jquery-1.4.1-vsdoc.js"></script> 
    <style type="text/css"> 
     .style1 { 
      width: 109px; 
     } 
    </style> 
</head> 
<body> 
<table> 

    <tr> 
     <td class="style1"><label >User Name</label></td> 
     <td><input id="uName" type="text" /></td> 
    </tr> 
    <tr> 
     <td class="style1"><label >Password</label></td> 
     <td><input id="passw" type="password" /></td> 
    </tr> 
    <tr> 
     <td class="style1"><input id="runSample1" type="button" value="Send" style="width: 62px"/> </td> 
    </tr> 
    </table> 
</body> 
</html> 

とHttpListenerをコードIEは、ローカルホストを

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Net; 
using System.Runtime.Serialization; 
using System.Runtime.Serialization.Json; 
using System.Threading; 
using System.Collections.Specialized; 
using System.Collections; 
using System.Security.Cryptography.X509Certificates; 
namespace TestApplication 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      if (!HttpListener.IsSupported) 
      { 
       Console.WriteLine("Windows XP SP2 or Server 2003 is required to use the HttpListener class."); 
       return; 
      } 
      // Create a listener. 
      HttpListener listener = new HttpListener(); 
      //listener.AuthenticationSchemes = AuthenticationSchemes.Negotiate; 
      listener.Prefixes.Add("http://*:8080/"); 
      //listener.AuthenticationSchemes 
      listener.Start(); 
      Console.WriteLine("Listening..."); 
      for (; ;) 
      { 
       HttpListenerContext ctx = listener.GetContext(); 
       new Thread(new Worker(ctx).ProcessRequest).Start(); 
      } 
     } 
    } 
    [DataContract] 
    internal class Person 
    { 
     [DataMember] 
     internal string name; 

     [DataMember] 
     internal int age; 
    } 
    class Worker 
    { 
     private HttpListenerContext context; 
     public Worker(HttpListenerContext context) 
     { 
      this.context = context; 
     } 

     public void ProcessRequest() 
     { 

      HttpListenerRequest request = context.Request; 
      List<Person> eList = new List<Person>(); 
      Hashtable formVars = new Hashtable(); 
      Person person; 
      for (int i = 0; i <= 10;i++) 
      { 
       person = new Person(); 
       person.name = "Pesron " + i; 
       person.age = i; 
       eList.Add(person); 
      } 
      HttpListenerResponse response = context.Response; 
      System.IO.StreamReader reader = new System.IO.StreamReader(request.InputStream, request.ContentEncoding); 
      // S contain parameters and values 
      string s = reader.ReadToEnd(); 
      string[] pairs = s.Split('&'); 
      for (int x = 0; x < pairs.Length; x++) 
      { 
       string[] item = pairs[x].Split('='); 
       formVars.Add(item[0],item[1]); 
      } 
      String userName = formVars["userName"].ToString(); 
      String password = formVars["password"].ToString(); 
      //To send any object as json to client 
      DataContractJsonSerializer jsonObject = new DataContractJsonSerializer(typeof(List<Person>)); 
      System.IO.Stream output = response.OutputStream; 
      MemoryStream ms = new MemoryStream(); 
      jsonObject.WriteObject(ms, eList); 
      byte[] buffer = ms.ToArray(); 
      response.ContentType = "text/plain"; 
      response.ContentEncoding = System.Text.UTF8Encoding.UTF8; 
      response.ContentLength64 = buffer.Length; 
      //These headers to allow all browsers to get the response 
      response.Headers.Add("Access-Control-Allow-Credentials", "true"); 
      response.Headers.Add("Access-Control-Allow-Origin", "*"); 
      response.Headers.Add("Access-Control-Origin", "*"); 
      //This line to write to the resonse 
      output.Write(buffer, 0, buffer.Length); 
      output.Close(); 
     } 
    } 
} 

答えて

3

サンドボックスではありません。 FFや他のブラウザはそうです。彼らはウェブへの呼び出しとしてlocalhostの呼び出しを見るが、これは許されない。

あなたはHttpListenerをのヘッダに

Access-Control-Allow-Credentials: true 
Access-Control-Allow-Origin: * 
Access-Control-Origin: * 

を追加しようとすることができます。なぜこれが必要であるかについての良い論文は、hereに設立することができます。

+0

申し訳ありませんが、httplistenerクラスが既にすべてのブラウザでリクエストを取得していますが、インターネットエクスプローラが取得したレスポンス文字列を返信する際の問題はありません。 – fighter

+0

フィドラーあなたにあげる? – mslot

+0

私は開発ツールを使用しています。$ .post( "http:// localhost:80 /"、{userName:userNameJS、password:passwordJS}、function(data){ alert(data) ; });それはデータを表示しますが、mozillaでFirebugを使用すると、エラーが表示されます – fighter

関連する問題