jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jQuery AJAX调用导致错误状态403大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用jQuery AJAX查询Web服务.我的查询如下所示:
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
});

当我执行此操作时,我得到@L_944_2@的状态错误.我不明白为什么我的调用导致状态代码为@L_944_2@.我控制了我的服务的安全性并且它被标记为全开.我知道密钥是有效的,因为我在另一个呼叫中使用它,这是有效的.以下是有效的通话:

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
});

我知道这是两个不同的终点.但我100%确信这不是服务器端身份验证或权限错误.再一次,服务器端的一切都是敞开的.这意味着我在客户端请求上犯了一些错误.

我觉得我应该知道这个请求是在开发期间做出的.所以,我从http://localhost:3000开始运行.出于这个原因,我立刻认为这是一个CORS问题.但一切看起来都很正确事实上我的POST请求有效,但我的GET并没有让我绝对感到沮丧.我错过了什么吗?会是什么呢?

@H_696_12@

解决方法

@L_944_2@错误的原因是您没有发送标头.由于您正在发出CORS请求,因此除非服务器通过向响应添加Access-Control-Allow-Headers来启用这些标头,否则您无法发送任何自定义标头.

preflighted-request中,客户端向服务器发出2个请求.第一个是预检(使用OPTION方法),第二个是实际请求.服务器发送Access-Control-Allow-Headers标头作为预检请求的响应.因此它可以发送一些标头.通过这种方式,您的POST请求可以正常工作,因为POST请求是预检请求.但是对于GET请求,没有预检来收集Access-Control-Allow-Headers标题.因此浏览器不会发送您的自定义标头.

此问题的解决方法

解决此问题,请将dataType和contentType设置为json,如下所示:

var serviceEndpoint = 'http://example.com/object/details?version=1.1';
$.ajax({
  type: 'GET',dataType: 'json',contentType: 'json',error: onFailure
});

通过这种方式,您的获取请求将是一个预先发出的请求.如果您的服务器启用带有Access-Control-Allow-Headers标头的api-key,它将起作用.

上述请求的示例服务器配置(用express.js编写):

res.setHeader('Access-Control-Allow-Origin','*');
res.setHeader('Access-Control-Allow-Methods','*');
res.setHeader('Access-Control-Allow-Headers','api-key,content-type');
res.setHeader('Access-Control-Allow-Credentials',truE);

添加

实际上,在执行jsonp请求时,contentType应该是application / javascript或application / json.没有contentType作为jsonp.

@H_696_12@ @H_696_12@

大佬总结

以上是大佬教程为你收集整理的jQuery AJAX调用导致错误状态403全部内容,希望文章能够帮你解决jQuery AJAX调用导致错误状态403所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。