Javascript 对USPS API的跨域访问
我正试图用jquery向USPS网站发出CORS请求,我已经让它在我的工作pc上工作,只有出于某种原因才使用internet explorer。我在新版IE、Firefox和Chrome上发现了一个CORS错误 在一个由于没有代表而不允许我评论的问题中,他们建议先将其发送到服务器,然后再提出请求,而不是从浏览器,有人能给我解释一下吗?如何使用javascript托管服务器,我只需要使用此API获取跟踪信息,每次尝试这样做时,这种愚蠢的CORS限制都会让我感到痛苦 请帮忙Javascript 对USPS API的跨域访问,javascript,jquery,xmlhttprequest,Javascript,Jquery,Xmlhttprequest,我正试图用jquery向USPS网站发出CORS请求,我已经让它在我的工作pc上工作,只有出于某种原因才使用internet explorer。我在新版IE、Firefox和Chrome上发现了一个CORS错误 在一个由于没有代表而不允许我评论的问题中,他们建议先将其发送到服务器,然后再提出请求,而不是从浏览器,有人能给我解释一下吗?如何使用javascript托管服务器,我只需要使用此API获取跟踪信息,每次尝试这样做时,这种愚蠢的CORS限制都会让我感到痛苦 请帮忙 function s
function sendTrackingRequest(x) {
var requestURL = "http://production.shippingapis.com/ShippingAPI.dll?API=TrackV2&XML="
var request = new XMLHttpRequest();
request.open( "GET", requestURL + trackNumberToBeTracked, true);
// various sanitizations should be employed on the backend when dealing with user input
request.responseType = "text/xml";
request.setRequestHeader( "Content-Type", "xml" );
request.addEventListener( "readystatechange", function() {
if ( request.readyState == 4 ) {
if ( request.status == 200 ) {
// process response
var trackingStatus = request.response
showResult(trackingStatus);
console.log(trackNumberToBeTracked);
} else {
alert("error")
}
}
}, false );
request.send();
}
});
好的,各位
请容忍我,我犯了一个巨大的初学者错误,并找出了Slakes帮助的错误
所以在我的代码中,我有一个类似名称的函数,它是一个未定义的.response。当我听到第一个助手说Get请求不需要contenttype时,我出现了这个错误,他在进一步研究后马上提出了这个请求
在我删除了所有我正在测试的坏函数之后,我终于得到了工作的响应。这是我的密码
$(document).ready(function() {
$('#trackButton').click(function() {
var enteredNumber = $('#trackingNumbers').value;
var trackNumberToBeTracked = '<TrackRequest USERID="648FOOTL0638"> <TrackID ID="9405510200839104436417"></TrackID></TrackRequest>'
sendTrackingRequest();
function sendTrackingRequest(x) {
var requestURL = "http://production.shippingapis.com/ShippingAPI.dll?API=TrackV2&XML="
var request = new XMLHttpRequest();
request.open( "GET", requestURL + trackNumberToBeTracked, true);
// various sanitizations should be employed on the backend when dealing with user input
request.addEventListener( "readystatechange", function() {
if ( request.readyState == 4 ) {
if ( request.status == 200 ) {
// process response
var trackingStatus = request.response
alert(trackingStatus);
console.log(trackNumberToBeTracked);
} else {
alert("error")
}
}
}, false );
request.send();
}
});
})) 你需要一个网络服务器。哦,谢谢,你能给我指个地方让我知道那意味着什么吗@Slaks他们的服务器发送
访问控制允许源:
;你其实不应该有问题。您会遇到什么错误?内容类型对get请求没有意义。
function showResult(request) {
var xmlDoc = request.response.documentElement;
removeWhitespace(xmlDoc);
var outputResult = $("#BodyRows");
var rowData = xmlDoc.$("#Employee");
addTableRowsFromXmlDoc(rowData,outputResult);
};