我需要發送的XMLHttpRequest到Yandex的服務器獲取錯誤的請求錯誤400試圖發送XMLHttpRequest來http://api.lbs.yandex.net/geolocation
我得到的錯誤請求錯誤(400)和:
XMLHttpRequest無法加載http://api.lbs.yandex.net/geolocation。否 「訪問控制 - 允許來源」標題出現在請求的 資源中。因此不允許訪問原產地'http://localhost'。 響應了HTTP狀態代碼400
這裏是我的代碼:
var xhr = new XMLHttpRequest();
var url = "http://api.lbs.yandex.net/geolocation";
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() {
<some code>
};
var data = JSON.stringify({
"common": {
"version": "1.0",
"api_key": <here goes API key>
},
"gsm_cells": [
{
"countrycode": params[0],
"operatorid": params[1],
"cellid": params[3],
"lac": params[2],
"age": 0
}
]
});
xhr.send(data);
我無法找到解決方案,這樣簡單的事情(?)!
Thx爲快速和很好解釋的答案!你是對的,在數據查詢中加入「json = ...」可以修復第一個錯誤。 雖然我認爲必須有另一個解決方案,但代理來解決第二個問題,因爲yandex.geolocation是一個公共服務,並且必須處理來自不同服務器的請求。 –
是的,它可以從任何非瀏覽器工具或後端編程運行時工作,但只要它能夠直接從瀏覽器中運行的前端JavaScript代碼生成請求,我保證絕對沒有任何其他方式可以使其工作以外的其他方式使用答案中描述的方式使用CORS代理。瀏覽器會阻止你的代碼進入響應,因爲瀏覽器在默認情況下會阻止對來自跨源請求的響應的所有訪問,並且唯一的方法就是讓它們不會像那樣阻塞,就是讓它們成爲Access-Control-Allow-Origin響應頭 – sideshowbarker