2010-04-27 66 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