- 浏览: 1527121 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (525)
- SEO (16)
- JAVA-EE-Hibernate (6)
- JAVA-EE-Struts (29)
- JAVA-EE-Spring (15)
- Linux (37)
- JAVA-SE (29)
- NetWork (1)
- CMS (14)
- Semantic Research (3)
- RIA-Flex (0)
- Ajax-Extjs (4)
- Ajax-Jquery (1)
- www.godaddy.com (0)
- SSH (34)
- JavaScript (6)
- SoftwareEngineer (9)
- CMMI (0)
- IDE-Myeclipse (3)
- PHP (1)
- Algorithm (3)
- C/C++ (18)
- Concept&Items (2)
- Useful WebSite (1)
- ApacheServer (2)
- CodeReading (1)
- Socket (2)
- UML (10)
- PowerDesigner (1)
- Repository (19)
- MySQL (3)
- SqlServer (0)
- Society (1)
- Tomcat (7)
- WebService (5)
- JBoss (1)
- FCKeditor (1)
- PS/DW/CD/FW (0)
- DesignPattern (11)
- WebSite_Security (1)
- WordPress (5)
- WebConstruction (3)
- XML|XSD (7)
- Android (0)
- Project-In-Action (9)
- DatabaseDesign (3)
- taglib (7)
- DIV+CSS (10)
- Silverlight (52)
- JSON (7)
- VC++ (8)
- C# (8)
- LINQ (1)
- WCF&SOA (5)
- .NET (20)
- SOA (1)
- Mashup (2)
- RegEx (6)
- Psychology (5)
- Stock (1)
- Google (2)
- Interview (4)
- HTML5 (1)
- Marketing (4)
- Vaadin (2)
- Agile (2)
- Apache-common (6)
- ANTLR (0)
- REST (1)
- HtmlAnalysis (18)
- csv-export (3)
- Nucth (3)
- Xpath (1)
- Velocity (6)
- ASP.NET (9)
- Product (2)
- CSS (1)
最新评论
-
lt26w:
理解成门面模式应该比较容易明白吧
FacadePattern-Java代码实例讲解 -
lt26w:
看下面的例子比较明白.
FacadePattern-Java代码实例讲解 -
javaloverkehui:
这也叫文档,别逗我行吗,也就自己看看。
HtmlCleaner API -
SE_XiaoFeng:
至少也应该写个注释吧。
HtmlCleaner API -
jfzshandong:
...
org.springframework.web.filter.CharacterEncodingFilter 配置
Silverlight 中的 HTTP 通信和安全 <script src="../scripts/EventUtilities.js" type="text/javascript"></script><script src="../scripts/SplitScreen.js" type="text/javascript"></script><script src="../scripts/Dropdown.js" type="text/javascript"></script><script src="../scripts/script_manifold.js" type="text/javascript"></script><script src="../scripts/script_feedBack.js" type="text/javascript"></script><script src="../scripts/CheckboxMenu.js" type="text/javascript"></script><script src="../scripts/CommonUtilities.js" type="text/javascript"></script>
Silverlight 中的 HTTP 功能
在 Silverlight 中,有一些基本的 HTTP/HTTPS 通信功能。 这些功能会根据是使用承载 Silverlight 应用程序的浏览器来执行 HTTP 处理,还是选择使用 Silverlight 客户端来执行 HTTP 处理而有所不同。有关如何为应用程序指定 HTTP 处理的信息,请参见 如何指定浏览器或客户端 HTTP 处理 。
下面的列表列出了基本 HTTP 功能以及各功能是由浏览器还是客户端 HTTP 处理支持:
同域调用 |
浏览器或客户端 |
始终允许。 |
跨域调用 |
浏览器或客户端 |
在根据服务器上承载的客户端访问策略文件进行配置时允许。 |
异步通信 |
浏览器或客户端 |
所有调用都是异步的。 |
标准标头和自定义标头 |
浏览器或客户端 |
必须根据客户端访问策略文件来允许。 |
GET 和 POST 方法 |
浏览器或客户端 |
始终允许。 |
GET 和 POST 以外的方法 |
仅限客户端 |
仅对客户端 HTTP 处理允许。 必须根据客户端访问策略文件来允许。 |
"200 确定"和"400 未找到"状态代码 |
浏览器或客户端 |
始终允许。 |
其他状态代码、响应标头和响应正文 |
仅限客户端 |
始终允许。 |
REST 服务调用 |
仅限客户端 |
始终允许。 |
自动 Cookie 处理 |
仅限浏览器 |
始终允许。基于浏览器的 Cookie 存储和基于客户端的 Cookie 存储是分离的,不会进行互操作。 |
手动访问 Cookie 存储 |
仅限客户端 |
始终允许。基于浏览器的 Cookie 存储和基于客户端的 Cookie 存储是分离的,不会进行互操作。 |
HTTP 通信方案和建议的方法
在同一域中下载和上载资源。 |
使用 WebClient 类。有关更多信息,请参见按需下载内容 。 |
调用在同一域中承载的基于 HTTP 的 Web 服务。 |
使用 WebClient 类或 HttpWebRequest /HttpWebResponse 类。有关更多信息,请参见How to: Make Requests to HTTP-Based Services 。 |
调用在同一域中承载的 SOAP、WCF 或 ASP.NET AJAX Web 服务。 |
为 Web 服务调用生成的代理。有关更多信息,请参见Accessing Services using Generated Proxies 。 如果不希望使用代理,请使用 HttpWebRequest /HttpWebResponse 类。 |
处理 Web 服务中的 XML、JSON 或 RSS 数据。 |
使用 WebClient 类或 HttpWebRequest /HttpWebResponse 类。有关更多信息,请参见Accessing HTTP Services Directly 或如何使用 LINQ to XML 从任意 URI 位置加载 XML 文件 。 |
调用另一域中的 Web 服务。 |
确保客户端访问策略文件位于域的根。使用代理、WebClient 类或 HttpWebRequest /HttpWebResponse 类。有关更多信息,请参见How to: Make a Service Available Across Domain Boundaries 。 |
发送 PUT、DELETE 和其他 HTTP 方法,包括自定义方法。 |
确保客户端访问策略启用了其他 HTTP 方法。指定客户端 HTTP 处理并按正常方式使用 HttpWebRequest /HttpWebResponse 类。有关指定客户端 HTTP 处理的更多信息,请参见如何指定浏览器或客户端 HTTP 处理 。 |
对跨域 POST 请求设置请求标头。 |
确保根据客户端访问策略文件允许标头。 对于数据上载中的请求标头,请使用 WebClient 类。将其 Headers 属性设置为所需的标头集合。 对于其他情况,请使用 HttpWebRequest 类。将其 Headers 属性设置为所需的标头集合。有关允许的标头的列表,请参见 HttpWebRequest. . :: . . Headers 。 |
随所有方法发送请求标头。 |
指定客户端 HTTP 处理并按正常方式使用 HttpWebRequest /HttpWebResponse 类,同时根据需要设置 Headers 属性。 |
发送对返回错误代码和 SOAP 错误的 SOAP 服务的请求 |
指定客户端 HTTP 处理并按正常方式使用 HttpWebRequest /HttpWebResponse 类,同时检索报告错误状态的消息正文。有关指定客户端 HTTP 处理的更多信息,请参见如何指定浏览器或客户端 HTTP 处理 。 |
执行 HTTP 调用的选项
有关如何为应用程序指定 HTTP 处理的信息,请参见如何指定浏览器或客户端 HTTP 处理 。 |
使用代理类
如果要与 SOAP、WCF 或 ASP.NET AJAX Web 服务进行通信,可以基于 Web 服务元数据创建一个代理类并使用该代理与 Web 服务进行通信。Silverlight 使用 Windows Communication Foundation (WCF) 功能创建代理并通过 HTTP 发送 SOAP 1.1 消息。如果使用 Visual Studio,可以右击您的 Silverlight 项目,选择"添加服务引用" 来自动创建代理。该代理为您创建消息并处理网络通信。有关如何创建与 Silverlight 交互的 Web 服务以及如何生成用于现有 Web 服务的代理的更多信息,请参见Building and Accessing Services using Generated Proxies 。有关与 ADO.NET 数据 Web 服务交互的更多信息,请参见 ADO.NET 数据服务 (Silverlight) 。
创建 HTTP 请求
如果您希望自己执行 HTTP 调用,可以使用以下在 System.Net 命名空间中找到的类。
-
WebClient
-
HttpWebRequest 和HttpWebResponse
通过这些类,您可以执行 GET 和 POST 请求并在某些情况下允许使用请求标头。此外,可以配置这些类以在 GET 请求上启用渐进式下载。
WebClient 类
WebClient 类提供了一个基于事件的简单模型,使您可以下载和上载流和字符串。如果不希望使用代理类,那么 WebClient 是个不错的选择。通常,此类易于使用,但为自定义通过网络发送的消息而提供的选项较少。
若要使用 WebClient 执行 POST 请求并上载资源文件或字符串,请使用以下方法之一。
-
WebClient. . :: . . OpenWriteAsync
-
WebClient. . :: . . UploadStringAsync
可以通过设置 WebClient. . :: . . Headers 属性对请求设置标头。必须根据客户端访问策略文件允许请求标头。有关更多信息,请参见本主题中的跨域通信 一节。
下面的代码演示了使用 WebClient 执行 POST 请求的示例。
' Create the web client. Private client As New WebClient() Public Sub New () InitializeComponent() ' Associate the web client with a handler for its ' UploadStringCompleted event. AddHandler client.UploadStringCompleted, AddressOf client_UploadStringCompleted End Sub Private Sub Button_Click(ByVal sender As Object , ByVal e As RoutedEventArgs) ' Create the request. Dim postRequest As String = "<entry xmlns='http://www.w3.org/2005/Atom'>" + _ "<title type='text'>New Restaurant</title>" + _ "<content type='xhtml'>" + _ " <div xmlns='http://www.w3.org/1999/xhtml'>" + _ " <p>There is a new Thai restaurant in town!</p>" + _ " <p>I ate there last night and it was <b>fabulous</b>.</p>" + _ " <p>Make sure and check it out!</p>" + _ " </div>" + " </content>" + _ " <author>" + _ " <name>Pilar Ackerman</name>" + _ " <email>packerman@contoso.com</email>" + _ " </author>" + _ "</entry>" ' Sent the request to the specified URL. client.UploadStringAsync(New Uri("http://blogs.contoso.com/post-create?blogID=1234" , _ UriKind.Absolute), postRequest) End Sub ' Event handler for the UploadStringCompleted event. Private Sub client_UploadStringCompleted(ByVal sender As Object , _ ByVal e As UploadStringCompletedEventArgs) ' Output the response. If e.[Error ] IsNot Nothing Then tb1.Text = e.[Error ].Message If tb1.Text = "" Then tb1.Text = e.Error .InnerException.Message End If Else tb1.Text = e.Result End If End Sub |
// Create the web client. WebClient client = new WebClient(); public Page() { InitializeComponent(); // Associate the web client with a handler for its // UploadStringCompleted event. client.UploadStringCompleted += new UploadStringCompletedEventHandler(client_UploadStringCompleted); } private void Button_Click(object sender, RoutedEventArgs e) { // Create the request. string postRequest = "<entry xmlns='http://www.w3.org/2005/Atom'>" + "<title type='text'>New Restaurant</title>" + "<content type='xhtml'>" + " <div xmlns='http://www.w3.org/1999/xhtml'>" + " <p>There is a new Thai restaurant in town!</p>" + " <p>I ate there last night and it was <b>fabulous</b>.</p>" + " <p>Make sure and check it out!</p>" + " </div>" + " </content>" + " <author>" + " <name>Pilar Ackerman</name>" + " <email>packerman@contoso.com</email>" + " </author>" + "</entry>" ; // Sent the request to the specified URL. client.UploadStringAsync(new Uri("http://blogs.contoso.com/post-create?blogID=1234" , UriKind.Absolute), postRequest); } // Event handler for the UploadStringCompleted event. void client_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e) { // Output the response. if (e.Error != null ) tb1.Text = e.Error.Message; else tb1.Text = e.Result; } |
若要使用 WebClient 执行 GET 请求来检索字符串或其他资源文件,请使用以下方法之一。
-
WebClient. . :: . . OpenReadAsync
-
WebClient. . :: . . DownloadStringAsync
若要启用 WebClient 的渐进式下载,请将 AllowReadStreamBuffering 属性设置为 false 。
有关如何使用 WebClient 下载内容的更多信息,请参见按需下载内容 。
HttpWebRequest 类和 HttpWebResponse 类
HttpWebRequest 类和 HttpWebResponse 类比 WebClient 支持更复杂的通信方案。可以按照 .NET Framework 异步模式使用 HttpWebRequest 和 HttpWebResponse 执行请求。使用 IAsyncResult 可提供异步请求和响应之间的连接。始终对新的非 UI 线程调用 HttpWebRequest 委托,这意味着如果计划在 UI 中使用响应,则需要调用回 UI 线程。可以通过检索当前的 SynchronizationContext 来执行此操作。
下面的代码示例演示了使用 HttpWebRequest 和 HttpWebResponse 类执行调用必须使用的模式。
Private syncContext As SynchronizationContext Private Sub Button_Click(ByVal sender As Object , ByVal e As RoutedEventArgs) ' Grab SynchronizationContext while on UI Thread syncContext = SynchronizationContext.Current ' Create request Dim request As HttpWebRequest = _ TryCast (WebRequest.Create(New Uri("http://blogs.contoso.com/post-create?blogID=1234" , _ UriKind.Absolute)), HttpWebRequest) request.Method = "POST" ' Make async call for request stream. ' Callback will be called on a background thread. Dim asyncResult As IAsyncResult = _ request.BeginGetRequestStream(New AsyncCallback(AddressOf RequestStreamCallback), _ request) End Sub Private statusString As String Private Sub RequestStreamCallback(ByVal ar As IAsyncResult) Dim request As HttpWebRequest = TryCast (ar.AsyncState, HttpWebRequest) request.ContentType = "application/atom+xml" Dim requestStream As Stream = request.EndGetRequestStream(ar) Dim streamWriter As New StreamWriter(requestStream) streamWriter.Write("<entry xmlns='http://www.w3.org/2005/Atom'>" + _ "<title type='text'>New Restaurant</title>" + "<content type='xhtml'>" + _ " <div xmlns='http://www.w3.org/1999/xhtml'>" + _ " <p>There is a new Thai restaurant in town!</p>" + _ " <p>I ate there last night and it was <b>fabulous</b>.</p>" + _ " <p>Make sure and check it out!</p>" + _ " </div>" + _ " </content>" + _ "<author>" + _ " <name>Pilar Ackerman</name>" + _ " <email>packerman@contoso.com</email>" + _ " </author>" + _ "</entry>" ) ' Close the stream. streamWriter.Close() ' Make async call for response. Callback will be called on a background thread. request.BeginGetResponse(New AsyncCallback(AddressOf ResponseCallback), _ request) End Sub Private Sub ResponseCallback(ByVal ar As IAsyncResult) Dim request As HttpWebRequest = TryCast (ar.AsyncState, HttpWebRequest) Dim response As WebResponse = Nothing Try response = request.EndGetResponse(ar) Catch we As WebException statusString = we.Status.ToString() Catch se As SecurityException statusString = se.Message If statusString = "" Then statusString = se.InnerException.Message End If End Try ' Invoke onto UI thread syncContext.Post(AddressOf ExtractResponse, response) End Sub Private Sub ExtractResponse(ByVal state As Object ) Dim response As HttpWebResponse = TryCast (state, HttpWebResponse) If response IsNot Nothing AndAlso response.StatusCode = HttpStatusCode.OK Then Dim responseReader As New StreamReader(response.GetResponseStream()) tb1.Text = response.StatusCode.ToString() + " Response: " _ + responseReader.ReadToEnd() Else tb1.Text = "Post failed: " + statusString End If End Sub |
SynchronizationContext syncContext; private void Button_Click(object sender, RoutedEventArgs e) { // Grab SynchronizationContext while on UI Thread syncContext = SynchronizationContext.Current; // Create request HttpWebRequest request = WebRequest.Create(new Uri("http://blogs.contoso.com/post-create?blogID=1234" , UriKind.Absolute)) as HttpWebRequest; request.Method = "POST" ; // Make async call for request stream. Callback will be called on a background thread. IAsyncResult asyncResult = request.BeginGetRequestStream(new AsyncCallback(RequestStreamCallback), request); } string statusString; private void RequestStreamCallback(IAsyncResult ar) { HttpWebRequest request = ar.AsyncState as HttpWebRequest; request.ContentType = "application/atom+xml" ; Stream requestStream = request.EndGetRequestStream(ar); StreamWriter streamWriter = new StreamWriter(requestStream); streamWriter.Write("<entry xmlns='http://www.w3.org/2005/Atom'>" + "<title type='text'>New Restaurant</title>" + "<content type='xhtml'>" + " <div xmlns='http://www.w3.org/1999/xhtml'>" + " <p>There is a new Thai restaurant in town!</p>" + " <p>I ate there last night and it was <b>fabulous</b>.</p>" + " <p>Make sure and check it out!</p>" + " </div>" + " </content>" + "<author>" + " <name>Pilar Ackerman</name>" + " <email>packerman@contoso.com</email>" + " </author>" + "</entry>" ); // Close the stream. streamWriter.Close(); // Make async call for response. Callback will be called on a background thread. request.BeginGetResponse(new AsyncCallback(ResponseCallback), request); } private void ResponseCallback(IAsyncResult ar) { HttpWebRequest request = ar.AsyncState as HttpWebRequest; WebResponse response = null ; try { response = request.EndGetResponse(ar); } catch (WebException we) { statusString = we.Status.ToString(); } catch (SecurityException se) { statusString = se.Message; if (statusString == "" ) statusString = se.InnerException.Message; } // Invoke onto UI thread syncContext.Post(ExtractResponse, response); } private void ExtractResponse(object state) { HttpWebResponse response = state as HttpWebResponse; if (response != null && response.StatusCode == HttpStatusCode.OK) { StreamReader responseReader = new StreamReader(response.GetResponseStream()); tb1.Text = response.StatusCode.ToString() + " Response: " + responseReader.ReadToEnd(); } else tb1.Text = "Post failed: " + statusString; } |
如果标头是客户端访问策略文件允许的,则可以通过设置 HttpWebRequest. . :: . . Headers 属性发送标头。如果要对除 POST 请求之外的所有通信发送标头,则必须使用客户端 HTTP 处理。有关更多信息,请参见本主题中的跨域通信 一节。
若要启用 HttpWebRequest 的渐进式下载,请将 AllowReadStreamBuffering 属性设置为 false 。然后可以在响应流上对 BeginRead 执行多个调用。
-
有关如何使用 HttpWebRequest 和 HttpWebResponse 与 Web 服务通信的更多信息,请参见How to: Make Requests to HTTP-Based Services 。
跨域通信
默认情况下,Silverlight 支持在同域或源站点上调用 Web 服务。同域意味着调用必须使用同一子域、协议和端口。这是出于安全原因以及防止跨域伪造。
下图演示了在使用默认设置的 Silverlight 应用程序中所允许和不允许的调用示例。
使用跨域策略文件启用跨域通信
通过在域的根部署使用正确跨域策略文件的 Web 服务,可以在其他域中启用 Silverlight 应用程序要调用的 Web 服务。Silverlight 支持两种类型的跨域策略文件。
下表列出了请求统一资源定位符 (URI) 和 Silverlight 应用程序将查找跨域策略文件的位置的示例。
http://contoso.com/services/data |
http://contoso.com/clientaccesspolicy.xml |
http://sales.contoso.com/services/data |
http://sales.contoso.com/clientaccesspolicy.xml |
http://contoso.com:8080/services/data |
http://contoso.com:8080/clientaccesspolicy.xml |
https://contoso.com/services/data |
https://contoso.com/clientaccesspolicy.com |
如前所述,不允许重定向跨域策略文件。但是,Silverlight 应用程序将执行目标资源的重定向。仅当以下文件授予访问权限时才可检索该资源:
向 Silverlight 跨域调用方公开 Web 服务的安全注意事项
客户端访问策略文件示例
Silverlight 客户端访问策略文件是一个具有简单格式的 XML 文件。下面的示例演示一个 Silverlight 客户端访问策略文件。此示例有两个策略项。
<?xml version="1.0" encoding="utf-8"?> <access-policy> <cross-domain-access> <policy> <allow-from http-request-headers="SOAPAction"> <domain uri="*"/> </allow-from> <grant-to> <resource path="/services/" include-subpaths="true"/> </grant-to> </policy> <policy > <allow-from http-methods="*"> <domain uri="www.contoso.com"/> </allow-from> <grant-to> <resource path="/services/" include-subpaths="true"/> </grant-to> </policy> </cross-domain-access> </access-policy> |
对特定应用程序根,一个文件可以根据需要包含任意多个策略项。根据文件中所有策略项的并集允许调用。在本例中,如果包含 SOAPAction 标头的 POST 请求来自 www.contoso.com,则将根据第一个策略允许它。有关客户端访问策略文件格式的更多信息,请参见 Silverlight 中的网络安全访问限制 。
Silverlight 跨域策略文件中的通配符
Silverlight 客户端访问策略文件 (clientaccesspolicy.xml) 可以包含通配符 (*)。通配符可用于将对服务的访问权限授予所有域,但通常应将跨域访问权限仅授予您所知将需要访问权限的最小域集。此外,使用通配符的方式会影响 HTTP 和 HTTPS 之间的通信或者跨方案、调用方以及服务。
下表列出域节点的可能值以及每个值在跨方案访问中的影响。
<domain uri = "*"> |
启用所有 HTTPS 调用方 |
启用所有 HTTP 和 HTTPS 调用方 |
<domain uri= "http://*"> |
启用所有 HTTP 调用方 |
启用所有 HTTP 调用方 |
<domain uri = "http://www.contoso.com" > |
仅来自 http://www.contoso.com 的调用方 |
仅来自 http://www.contoso.com 的调用方 |
<domain uri = https://www.contoso.com > |
仅来自 https://www.contoso.com 的调用方 |
仅来自 https://www.contoso.com 的调用方 |
此外,对于客户端访问策略文件的 <AllowFrom> 节,也可以使用通配符启用来自该节中特定子域的调用方。下面的示例演示 Silverlight 客户端访问策略文件的摘录,其中使用通配符来启用来自一个子域的请求。
<?xml version="1.0" encoding="utf-8"?> <access-policy> <cross-domain-access> <policy > <allow-from http-request-headers="SOAPAction"> <domain uri="http://*.tailspintoys.com"/> </allow-from> ... |
跨域请求的方法支持
可以使用客户端 HTTP 处理为 Silverlight 应用程序启用其他 HTTP 方法。具体方法是将 http-methods 特性设置为通配符 (*)。如果 Silverlight 应用程序使用的是浏览器 HTTP 处理,则仅启用 GET 和 POST,而不管客户端访问策略文件中的设置。出于安全原因,一些方法会受到限制。
<?xml version="1.0" encoding="utf-8"?> <access-policy> <cross-domain-access> <policy > <allow-from http-methods="*"> <domain uri="http://*.tailspintoys.com"/> </allow-from> ... |
跨域请求的标头支持
如果使用浏览器 HTTP 处理,则仅当在客户端访问策略文件中显式允许时,才对跨域 POST 请求允许请求标头。客户端 HTTP 处理则在客户端访问策略文件中允许时,对所有 HTTP 方法启用请求标头。此规则的一个例外是 Content-Type 标头。跨域 POST 请求始终允许有 Content-Type 标头,不需要在客户端访问策略文件中显式调用这类标头。您还可以启用其他标头,方法是将 http-request-headers 设置为以下值之一:
-
如客户端访问策略文件示例所示的单个标头类型 (SOAPAction )
-
逗号分隔的标头列表 (SOAPAction, x-custom-header )
-
启用所有标头的通配符 (* )
下表概括了客户端访问请求的标头支持。
GET |
始终允许标头 |
从不允许请求标头 |
POST |
始终允许标头 |
根据客户端访问策略文件允许请求标头 |
其他方法 |
始终允许标头 |
仅限客户端 HTTP 处理。必须根据客户端访问策略文件来允许。 |
跨域请求的路径限制
除了需要客户端访问策略文件外,如果不允许所有路径和子路径,则对于可由 Silverlight 应用程序调用的跨域 URI 的路径部分中允许的字符,还有其他限制。下图显示了 URI 的路径部分。
客户端访问策略文件限制路径时,下面的字符从不允许出现在跨域请求路径中。
-
连续点字符 (..)
-
后带正斜杠的点 (./)
-
百分号 (%)
有关启用的客户端访问策略文件和方案的格式的更多信息,请参见 Silverlight 中的网络安全访问限制 和Making a Service Available Across Domain Boundaries 。
Adobe Flash 跨域策略文件
Silverlight 支持 Adobe Flash 跨域策略文件(名为 crossdomain.xml)的子集。Silverlight 支持 <allow-access-from> 标记具有以下特性。
-
domain 特性。此特性允许的唯一值为 "*" ,这意味着向所有调用方公开整个域。
-
secure 特性。此特性仅在目标域为 HTTPS 时才有意义。此特性接受 true 或 false 值,它指示是否允许 HTTP 调用方访问此域中的资源。
-
headers 特性。此特性列出接受的标头。
-
下面是 Silverlight 支持的 Adobe Flash 跨域策略文件 (crossdomain.xml) 的一个示例。
<?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-access-from domain="*"/ headers="SOAPAction" secure="true"> </cross-domain-policy> |
发表评论
-
SilverLight异步调用WebService出错!
2010-01-19 12:58 5394SilverLight异步调用WebService出错! ... -
Silverlight播放器 C#语言
2010-01-13 13:30 3294这段时间研究Silverlight中的MediaElement ... -
使用Silverlight,制作简单播放器的一点点心得。
2010-01-13 13:28 3648首先介绍什么是Silverligh ... -
初探silverlight--简易播放器
2010-01-13 13:28 1508<UserControl xmlns=" ... -
新开发的silverlight视频播放器,
2010-01-13 13:21 4476http://www.chenjiliang.com/Arti ... -
Silverlight教程第四部分:使用 Style 元素更好地封装观感
2010-01-12 22:11 1263Silverlight教程第四部分 ... -
Silverlight Carousel: Creating a Silverlight Control Displays Picture in an Inte
2010-01-12 18:18 1888http://www.codeproject.com/KB/s ... -
Using projection to build a 3D carousel in Silverlight 3
2010-01-12 18:14 2323http://ww ... -
CoverFlow – built using Silverlight 3's 'Projection' feature
2010-01-12 18:11 1882CoverFlow – built using Silver ... -
silverlight动画播放停止重播等控制
2010-01-06 12:38 1379ani.begin() ani.stop(); ani. ... -
silverlight速学范例100
2010-01-06 12:37 1269silverlight速学范例100 ... -
Visual Studio的 诡异bug(mscorlib无法引用)引发的对话 and Silverlight XAML 构造出错
2010-01-04 09:25 4119... -
Silverlight常见问题及解决方法
2009-12-22 14:06 1270Silverlight常见问题及解决方法 ... -
网上常用免费webservice 查询
2009-12-22 12:47 4594网上常用免费webservice 查询 2008-11 ... -
必应 Bing 新特性之最新文章, Wolfram|Alpha 整合, 天气搜索等已推出
2009-12-21 23:33 1520必应 Bing 增加了一项“最新文章”的搜索结果特性,例如下图 ... -
下载silverlight官网的全部视频教程
2009-12-21 23:30 14846Silverlight官网提供了许 ... -
Silverlight客户端和WCF服务器端共享类库
2009-12-21 23:21 1825在Silverlight企业级项目开发中,访问数据库是很常见的 ... -
Create a Silverlight Europe weather map
2009-12-21 22:55 1582I don’t generally fi ... -
必应地图图片系统(Tile System)之二
2009-12-21 22:53 2313【坐标系和地图图片编 ... -
必应地图SilverLight控件入门讲座之六:显示街景(Streetside)
2009-12-21 22:51 4869必应地图SilverLight控件入门讲座之六:显示街景(St ...
相关推荐
在IT行业中,Silverlight和WCF(Windows Communication Foundation)是两个关键的技术,它们在构建分布式应用程序时发挥着重要作用。本文将深入探讨Silverlight与WCF通信的基础知识,并通过一个简单的应用示例进行...
在实际开发中,WCF服务可能包含更复杂的操作,例如数据传输、事务处理、安全性和错误处理等。同时,Silverlight应用程序可能需要处理各种UI交互、数据绑定和异步编程。理解这些基本概念和技术是构建高效、可扩展的...
通过正确配置服务和客户端代理,可以在Silverlight应用中实现与WCF服务的安全通信。在提供的`TransportSecuritySilverlight`示例中,可以找到具体的代码实现和配置方法,这对于深入理解并实践这些概念非常有帮助。
提供的"SocketDemo"很可能是包含一个完整的Silverlight Socket通信示例项目,包含了客户端和服务器端的代码示例,可以用来学习和理解如何在Silverlight应用中实现Socket通信。 总的来说,Silverlight Socket通信...
在.NET开发领域,Silverlight是...总的来说,Silverlight中导入和导出Excel文件涉及到客户端与服务器之间的数据交互,以及文件操作和数据格式转换。通过WCF服务作为中介,可以实现这个功能,但需注意安全性和性能优化。
在Silverlight中,JavaScript通信主要通过两种方法实现:`ScriptableMember`和`ExternalInterface`。`ScriptableMember`是C#中用于标记公共成员的特性,这样它们就可以在JavaScript中访问。而`ExternalInterface`是...
在Silverlight中,WCF允许创建强类型的服务接口,这些接口可以安全、高效地在客户端和服务器之间交换数据。WCF支持多种传输协议和消息编码,如HTTP、TCP、Named Pipes,以及SOAP、JSON等数据格式。使用WCF时,开发者...
3. **深度安全特性**:Silverlight 5增强了安全特性,如代码访问安全(CAS),使得开发者可以在更安全的环境中运行应用程序。 4. **更丰富的API**:增加了大量新的API,提供了更多的控件和类库,如多媒体播放、数据...
安装后,开发人员和用户都能在浏览器中查看和运行基于Silverlight 4的应用程序。 2. **编程模型**:Silverlight 4支持.NET Framework,使用C#、VB.NET或JavaScript进行编程。它引入了新的API和类库,扩展了对RIA...
Microsoft Silverlight 是一个跨浏览器、跨平台的 .NET Framework 实现,用于获得 Web 的媒体体验和丰富交互式应用程序。以下各节说明如何使用 Silverlight 生成应用程序: Silverlight 的 .NET Framework 类库 ...
在提供的`sample`文件中,可能包含了实现这种通信的示例代码,包括Silverlight应用的C#代码和HTML页面的JavaScript代码。通过分析这些代码,可以更深入地理解上述概念。 总之,Silverlight与Web页面的交互是通过`...
在实际应用中,为了实现双向通信,你可能需要在JavaScript和Silverlight之间设置事件监听器。在HTML端,你可以添加事件处理函数来调用Silverlight控件暴露的方法;在Silverlight端,你可以通过`...
在Silverlight和Flash之间进行数据通信时,通常需要克服浏览器的安全沙箱限制。例如,使用跨域策略文件(crossdomain.xml)允许不同源之间的通信。此外,为了确保数据安全,可能需要加密和解密传输的数据。 总之,...
本示例“Silverlight用户验证”着重关注如何在Silverlight应用中实现用户输入的验证,确保数据的有效性和安全性。 在Silverlight应用中,用户验证是必不可少的一部分,它能确保用户在提交数据时遵循预设的规则,...
5. **安全增强**:在安全性方面,Silverlight 5增加了对客户端证书的支持,提升了网络通信的安全性。 6. **企业级功能**:Silverlight 5为商业应用提供了更多支持,如Out-of-Browser (OOB)模式,允许应用在浏览器...
书中可能还涵盖了数据绑定、服务通信(如WCF或RESTful服务)、安全性考虑以及优化技巧。 银光(Silverlight)还包含了丰富的开发工具,如Expression Blend,它为设计人员提供了视觉设计界面,可以与Visual Studio...
6. **Silverlight客户端代码**: 在Silverlight应用中,我们需要创建一个代理类来与服务通信,并实现回调接口中的方法。使用`ChannelFactory`或者`ServiceReference`生成的服务代理可以方便地进行这些操作。 7. **...
7. **安全性**: Silverlight运行在沙盒环境中,确保了安全性和隔离性,防止恶意代码对用户的系统造成损害。 **DrPopperSilverlight项目** "DrPopperSilverlight"可能是一个示例项目,用于教授和展示Silverlight的...
1. **WCF服务**:WCF是.NET Framework中的一个全面的面向服务的架构,它可以提供多种通信协议和绑定方式,如HTTP、TCP等。我们可以创建一个WCF服务项目,定义操作合同(OperationContract),然后在服务实现类中编写...