2013-06-27 65 views
0

我想通過JavaScript發送POST請求到不同的主機與一些請求標題和帖子正文。Javascript發佈要求到不同的主機

我該怎麼做?

我使用XMLHttpRequest嘗試過,但我得到以下錯誤: 0x80004005 (NS_ERROR_FAILURE)

var xmlHttpRequest = new XMLHttpRequest(); 
xmlHttpRequest.open("POST", "https://somedomain/deviceapi/v1/rest/registration/device/anonymous", false); 
xmlHttpRequest.setRequestHeader("Accept", "application/json"); 
xmlHttpRequest.setRequestHeader("some key", "some value"); 
xmlHttpRequest.setRequestHeader("Accept-Charset", "UTF-8"); 
xmlHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); 
xmlHttpRequest.send("some data"); 
+0

你不能,出於安全原因禁止,請參閱[這裏](https://en.wikipedia.org/wiki/Same_origin_policy) – Jacopofar

+0

同源策略 –

+0

你可以使用從任何地方到任何地方... – dandavis

回答

0

cd C:\Program Files (x86)\Google\Chrome\Application\ chrome.exe --allow-file-access-from-files --disable-web-security pause

這允許你繞過谷歌瀏覽器的同源策略和測試你的東西。

0

不可能XHR除非你的瀏覽器支持CORS和遠程主機可以讓你的原點(或允許所有起源(*) )。見here

這從html5rocks.com功能將讓你知道:

function createCORSRequest(method, url) { 
    var xhr = new XMLHttpRequest(); 
    if ("withCredentials" in xhr) { 

    // Check if the XMLHttpRequest object has a "withCredentials" property. 
    // "withCredentials" only exists on XMLHTTPRequest2 objects. 
    xhr.open(method, url, true); 

    } else if (typeof XDomainRequest != "undefined") { 

    // Otherwise, check if XDomainRequest. 
    // XDomainRequest only exists in IE, and is IE's way of making CORS requests. 
    xhr = new XDomainRequest(); 
    xhr.open(method, url); 

    } else { 

    // Otherwise, CORS is not supported by the browser. 
    xhr = null; 

    } 
    return xhr; 
} 

var xhr = createCORSRequest('GET', url); 
if (!xhr) { 
    throw new Error('CORS not supported'); 
} 
+0

我使用ff22,所以它支持CORS。如何確定遠程主機是否允許來源? – Niklas

+0

給出一個嘗試 –

+0

它正在工作。 CORS被支持,但我沒有得到任何迴應。 – Niklas