2010-04-27 63 views
2

我已经开始向定制的C#非网络服务器应用程序添加HTTP支持,该功能似乎在Firefox/IE/Chrome中正常工作时直接在浏览器中输入URL - 我在哪里可以在我的应用程序的页面中看到返回的文本字符串。AJAX自定义服务器的HTTP协议响应问题

问题是,当我尝试从网页上的JavaScript中的HTTPRequest执行相同的操作时我没有得到Chrome或Firefox的响应(在IE中没有问题) - 而是从HTTPRequest获得状态为零目的。但是我可以看到,我的应用程序从它的调试输出接收到来自浏览器的请求并提供了响应,因此浏览器不能像我在这种情况下发送的响应一样,IE浏览器不太挑剔。

我一直在尝试不同的POST和GET请求都无济于事之间的交换 - 例如:

request.open( 'GET',网址,真实); request.onreadystatechange = mycallback; //request.setRequestHeader('Content-type','application/x-www-form-urlencoded'); request.send(null); //试图 '' 以及和其它数据与POST

我的最简单的服务器答复我曾尝试是:

HTTP/1.1 200 OK \ r \ n 的Content-Length:20 \ r \ n 内容类型:text/plain \ r \ n \ r \ n ...........

我试过1.0而不是1.1,不同的头文件如Connection:Close,Accept-范围和其他随机的东西,因为我试图模仿其他类似于Wireshark的回应。

显然它必须是简单的东西,但魔术组合避开了我!

非常感谢提前。

+0

我突然想到的是,JavaScript所在的网页来自运行在同一台计算机上的Web服务器,因此具有与我的自定义服务器相同的IP地址。但是,Apache Web服务器运行在端口80上,但我的自定义服务器在端口8080上。 难道我在Chrome和Firefox下被同一个原始安全策略咬住了吗? – iam 2010-04-27 09:32:50

回答

2

并在该笔记上我回答了我自己的问题,这是跨域安全功能。

这是我现在添加额外的响应头固定:

“访问控制允许来源:*”

希望这是有人在将来别人有用!

+0

我应该注意到,可能无法在一些旧版本的Firefox中使用(在Chrome上不确定),但对我的需求来说很好。 – iam 2010-04-27 09:44:26

+0

适用于Chrome 40.0.2214.93。顺便谢谢你!然而,我仍然不明白浏览器如何通过这个头文件的存在来提供安全性...... – Bitterblue 2016-06-16 14:47:39