我正在尝试使用jquery向USPS网站发出CORS请求,我已经让它在我的工作电脑上工作,因为某些原因使用Internet Explorer。我在新版本的IE以及Firefox和Chrome上收到了CORS错误。
在一个问题中,由于没有代表我不能发表评论,他们建议先将其发送到服务器,然后再发出请求而不是浏览器,有人可以向我解释一下吗?我如何使用javascript托管服务器,我只需要使用这个API来获取跟踪信息,每次我尝试做这样的事情时,这个愚蠢的CORS限制是我的后方的痛苦。
请帮忙。
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();
}
});
答案 0 :(得分:0)
好的每个人。
请耐心等待我,我犯了一个巨大的初学者错误,并弄清楚Slakes的帮助有什么问题。
所以在我的代码中,我有一个类似名称的函数,它是一个未定义的.response。我听了第一个帮助者后发现了这个错误,他说一个内容类型对于Get请求并不是必要的,他在进一步的研究之后就是这样。
在我删除了我正在测试的所有不良功能之后,我终于得到了我的回应。这是我的代码
$(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();
}
});
这是下面的代码,在我拿出set header类型(由于api上不允许POST请求解决了我的CORS问题)后给出了错误
function showResult(request) {
var xmlDoc = request.response.documentElement;
removeWhitespace(xmlDoc);
var outputResult = $("#BodyRows");
var rowData = xmlDoc.$("#Employee");
addTableRowsFromXmlDoc(rowData,outputResult);
};
});