2012-03-26 142 views
0

一個簡單的JS GET客戶端正在發生一些非常奇怪的事情。以下是使用JQuery的代碼:JQuery客戶端失敗localhost

<h3 onclick="$.ajax({ 
url: 'http://147.102.82.124/', 
type: 'GET',        
error: function() { alert('FAILURE'); }, 
success: function() {alert('SUCCESS')} 
});">Click me</h3> 

除非URL設置爲localhost,否則該方法會觸發'FAILURE'消息。同時,遠程服務器回覆一個200狀態碼(我使用Firefox的Web控制檯進行檢查)。

[15:06:59.135] GET http://147.102.82.124/ [HTTP/1.1 200 OK 9ms] 

和想法?

+0

腳本內聯的任何原因?如果您從外部(甚至是頁內但非內聯)腳本附加處理程序,您會遇到同樣的問題嗎? – danwellman 2012-03-26 12:11:17

+0

@danwellman:那只是爲了測試......我想3nigma給出了答案。 – 2012-03-26 12:17:43

+0

您需要的是服務器端代理腳本。你的頁面 - >你的服務器 - >另一臺服務器。您可以使用PHP + cURL – danwellman 2012-03-26 12:24:06

回答

2

作爲一種安全措施跨源請求是不允許的,看到CORS

+0

哦,好的!所以我猜想當我的web應用程序將部署在http://myserver.org上時,那麼對myserver.org的所有請求最終都會成功。不是嗎? – 2012-03-26 12:13:05

+0

'myserver.org'服務的頁面的所有請求都會成功是 – Rafay 2012-03-26 12:14:46

+0

其實我在本地主機上再次嘗試,但使用不同的本地域名(在/ etc/hosts中定義),並且失敗。它確實要求將請求發送到同一臺服務器。但出於好奇...可以將我的請求指向不同的服務器嗎? – 2012-03-26 12:17:14

1

我得到了同樣的問題,我解決了使用服務器腳本,總是能夠獲得不同領域的內容。

因此,您的ajax請求需要指向您的本地腳本(使用Java,PHP,Python或以前編寫的......),並且您的本地腳本將能夠爲您提供不同域的內容。

+0

是的,聽起來不錯,但它是一種解決方法,誠然! – 2012-03-26 12:18:25

+0

是的,我知道,但這是跨越不同領域的一種簡單方法。也許node.js也可以完成這個任務。 – antonjs 2012-03-26 12:23:30