安全策略系统的基础
使用套接字类的另一个限制是允许网络应用程序连接的目标端口范围必须在 4502-4534 范围内。这些是 Silverlight 应用程序使用套接字的连接所允许的唯一目标端口。如果目标端口不在此端口范围内,则连接尝试将失败。如果需要支持特定的现有应用程序协议,目标服务器可能会在此受限范围内的端口上接收连接并将其重定向到不同的端口(例如,众所周知的端口)。
我认为缩小端口范围会限制可用的 tcp 套接字。他们在此处显示了套接字的示例策略文件
<?xml version="1.0" encoding ="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from>
<domain uri="file:///" />
</allow-from>
<grant-to>
<socket-resource port="4502-4506" protocol="tcp" />
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
引用 MS 的以下文档
使用 clientaccesspolicy.xml 文件允许跨域访问
要启用服务以通过 TCP 套接字进行访问,请添加
<socket-resource port="4502" protocol="tcp" />
到<grant-to>
元素,其中4502
是托管服务的端口值。
域示例
此策略文件仅接受来自指定域和方案的连接。此策略文件指定特定的请求标头并指定可以访问的资源。
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="MyHeader, X-API-*">
<domain uri="http://electronics.fabrikam.com"/>
<domain uri="http://books.fabrikam.com"/>
<domain uri="http://contoso.com:8080"/>
</allow-from>
<grant-to>
<socket-resource port="4502-4506" protocol="tcp" />
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
对于上述策略,允许下面列出的 Silverlight HTTP 应用程序访问列出的端口:
http://electronics.fabrikam.com/sample/app.xap
http://books.fabrikam.com/web/sample/app.html
http://contoso.com:8080/sample/app.xap
对于上述策略,不允许下面列出的 Silverlight 应用程序访问列出的端口:
http://electronics.fabrikam.com:8080/sample/app.xap
http://electronics.fabrikam.com:8080/sample/app.xap
http://bar.com/sample/app.xaml
https://bar.com/sample/app.html
可以发送以下 HTTP 请求标头(除了始终允许的 Content-Type 标头):
MyHeader
all headers starting with X-API-
Silverlight 中的资源网络安全访问限制