2010-05-26 138 views
0

我有一段JavaScript正在發送XMLHTTPRequest到另一臺服務器(wamp服務器)上的scoket的碼頭服務器上執行。 請求被髮送到套接字,但XHR響應似乎被阻止。 我唯一的想法就是它可能是XSS(跨站點腳本)的問題。 有沒有一種方法可以爲這個特定的請求啓用跨站點腳本,還是有其他我應該做的事情? 任何幫助將不勝感激!跨站點腳本幫助?

+0

「請求被髮送到套接字」 - 你是如何確定的?我建議不,那根本就沒有發生。因爲這將是一個完全的安全風險。 – bobince 2010-05-26 23:27:21

+0

我通過檢查PHP服務器上的日誌來確定這一點,在那裏我可以看到我在PHP插座上發佈了一個200。 – shane87 2010-05-27 08:58:18

回答

0

感謝球員們的迴應,但我確實發現問題出在同一起源策略上,因爲我從同一主機運行兩臺服務器,但端口號不同。 JSONP似乎可以解決問題,但我現在要嘗試使用一臺服務器來完成。

以下文章解釋了我在背景標題下的問題。 和表中的第四欄。

http://taossa.com/index.php/2007/02/08/same-origin-policy/

0

您無法對其他服務器進行xmlhttprequests。你有2個選項

  • 通過服務器的代理everthing服務的JavaScript。
  • 使用<script>標記可以使用該服務器上的動態生成的js將數據從其他服務器上提取出來。
+0

哦,你可以:) IE有XDomainRequest和大多數較新的瀏覽器支持CORS。所以說你不能這樣做是錯誤的,但是說出你可以,而不提及哪些瀏覽器也是錯誤的。 – 2010-05-27 22:45:47

3

這聽起來是正確的。瀏覽器跨域策略阻止XHR請求到其他域。嘗試使用JSONP技術來規避這一點。

跨域策略可以很容易被繞過似乎很奇怪,但這是因爲當一個服務器公開一個JSONP接口時,這顯然是一個共同的協議。

祝你好運!

+0

您的回覆剛剛保存了我的$$,JSONP FTMFW:P – 2010-06-11 16:35:16

1

看一看here,這可讓您在不使用JSONP的情況下在域邊界上公開ajax端點 - 它的純XHR頂部有一點跨域消息。

對於跨域AJAX的具體例子,看到這個http://consumer.easyxdm.net/current/example/xhr.html

順便說一句,這就是俄語版的Facebook(VKontakte等,75個+磨用戶)使用其API。

+0

這裏是我如何發送帖子.. 函數sendInitRQ(寬度,高度){ var post =「<?xml version = \」1.0 \「 encoding = \「UTF-8 \」?>「+ width +」「+ height +」「; sendPost(「http:// localhost:80/sokcet。PHP 「帖子,initReturned); } 功能sendPost(URL,POSTDATA,回調){ \t XMLHTTP = GetXmlHttpObject() \t如果(XMLHTTP == NULL){ \t \t警報(」 瀏覽器不支持HTTP請求 「) \t \t回 \t} \t xmlHttp.onreadystatechange =回調 \t xmlHttp.open(」 POST」,URL,真) \t xmlHttp.send(postdata); } 我從來沒有使用過JSONP嗎?有任何幫助嗎? – shane87 2010-05-27 12:06:16