0

我正在设计一个使用 JavaScript Ajax XHR 调用来检索动态数据的网站。

我有两个基于 C++ 的应用程序,它们在它们自己的端口上提供数据,并且我可以控制它们使用的端口。

使用 HTTP 1.1 请求请求动态数据,并使用 HTTP 1.1 标头返回数据,并且我可以控制标头数据。实际上,我在动态数据应用程序中嵌入了一个自定义 HTTP 服务器,因此我可以完全控制对话的两端。

如果我选择两个任意端口来提供动态数据,基于浏览器的用户是否必须在其防火墙上打开这些端口才能允许来自我的网页的请求?

例如,该网页将作为 www.mydomain.com/default.aspx 提供服务,并且在其中,它将有 Ajax XHR 调用以建立与 www.mydomain.com:8080 和 www.mydomain.com:8081 的连接(或选择任何端口号)。

我会被同源政策阻止吗?

我可以使用经常在防火墙上打开但没有在我的服务器上主动提供服务的端口吗?

解决此问题的最佳方法是什么,以便用户不必更改防火墙并且不会收到跨域警告?如果可能的话,我希望不要使用 iFrames。

这个话题之前可能有人问过,我已经彻底搜索过,但没有找到任何匹配的内容。

4

1 回答 1

0

维基百科说你必须保持相同的方案、主机和端口,但指出一些未命名的浏览器不强制使用端口。

http://en.wikipedia.org/wiki/Same_origin_policy

该方案类似于 HTTP:

主机名类似于 my.yahoo.com,但在某些浏览器中可以访问任何 ???.yahoo.com。

端口很清楚,但请注意 HTTP 和 HTTPS 使用不同的端口作为默认端口。

这个页面很有趣:

http://www.w3.org/Security/wiki/Same_Origin_Policy

于 2013-01-10T17:14:03.563 回答