jquery ajax报错403,jQuery AJAX call results in error status 403

作者在使用jQuery的AJAX GET请求访问服务端API时遇到403错误,尽管服务器开放且API密钥有效。他们怀疑是CORS问题,但POST请求正常,寻求解答可能的客户端错误源或跨域设置问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

I'm making a query to a web service using jQuery AJAX. My query looks like this:

var serviceEndpoint = 'http://example.com/object/details?version=1.1';

$.ajax({

type: 'GET',

url: serviceEndpoint,

dataType: 'jsonp',

contentType: 'jsonp',

headers: { 'api-key':'myKey' },

success: onSuccess,

error: onFailure

});

When I execute this, I get a status error of 403. I do not understand why my call results in having the status code 403. I'm in control of the security on my service and it is marked as wide-open. I know the key is valid, because I'm using it in another call, which works. Here is the call that works:

var endpoint = 'http://example.com/object/data/item?version=1.1';

$.ajax({

type: 'POST',

url: endpoint,

cache: 'false',

contentType:'application/json',

headers: {

'api-key':'myKey',

'Content-Type':'application/json'

},

data: JSON.stringify({

id: 5,

count:true

}),

success: onDataSuccess,

error: onDataFailure

});

I know these are two different endpoints. But I'm 100% convinced this is not a server-side authentication or permission error. Once again, everything is wide open on the server-side. Which implies that I'm making some mistake on my client-side request.

I feel I should communicate that this request is being made during development. So, I'm running this from http://localhost:3000. For that reason, I immediately assumed it was a CORS issue. But everything looks correct. The fact that my POST request works, but my GET doesn't has me absolutely frustrated. Am I missing something? What could it be?

dataRows.forEach(function (row, index) { // Construct the details for sys_DireInfoDetail dynamically var directiveDetails = headers.map((header, colIndex) => ({ XMC: header.trim(), // Use the header as the item name (XMC) XNR: row[colIndex] || ‘’ // Use the corresponding cell value as the content (XNR) })); // Make an AJAX call for each row and add the promise to the array var promise = $.post('/Ajax/AjaxService.aspx', { op: 'AddDireInfo', // Adjust to your new API endpoint strBID: strBID, strMID: strMID, strDireDetailJson: JSON.stringify(directiveDetails) }).done(function (result) { if (result.startsWith("1:")) { iSuccess++; } else { iFailure++; } lbMessageCountElement.textContent = "成功:" + iSuccess + ";失败:" + iFailure; // Update success count }).fail(function () { iFailure++; console.error("Error adding directive for row: ", index + 1); lbMessageCountElement.textContent = "成功:" + iSuccess + ";失败:" + iFailure; // Update failure count }); promises.push(promise); // Push the promise into the array }); // Wait for all AJAX calls to complete Promise.all(promises).then(function () { setTimeout(function () { lbMessageCountElement.textContent = "处理完毕: 成功 " + iSuccess + " 条,失败 " + iFailure + " 条。请点击关闭按钮关闭此页面"; // Update final counts lbMessageCountElement.offsetHeight; // Trigger a reflow }, 0); // resolve({true,iSuccess,iFailure }); resolve(true); }).catch(function (err) { console.error("Error processing directives:", err); lbMessageCountElement.textContent = "处理完成,但出现错误。"; resolve(false); }); dataRows有6000多行数据,每行数据需要执行一次请求,但是浏览器执行那么多次请求报错,怎么解决,给出完整修改后的代码
最新发布
03-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值