栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

jQuery AJAX调用导致错误状态403

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jQuery AJAX调用导致错误状态403

403错误的原因是 您没有发送标头 。由于正在发出CORS请求,因此除非服务器通过添加

Access-Control-Allow-Headers
到响应中来启用这些标头,否则无法发送任何自定义标头。

在preflighted-request中,客户端向服务器发出2个请求。第一个是预检(使用OPTIONS方法),第二个是实际请求。服务器发送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',   url: serviceEndpoint,  dataType: 'json',  contentType: 'json',  headers: { 'api-key':'myKey' },  success: onSuccess,  error: onFailure});

这样,您的get请求将为

preflighted request
。如果您的服务器启用
api-key
带有Access-Control-Allow-
Headers标头,则它将起作用。

以上请求的服务器配置示例(用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);

添加:

实际上,

contentType
应该是
application/javascript
或者
application/json
在执行jsonp请求时。没有
contentType
作为
jsonp



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/372583.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号