如何跳过AngularJS中的OPTIONS预检请求
发布时间:2020-12-17 09:06:25 所属栏目:安全 来源:网络整理
导读:我开发了一个PhoneGap应用程序,现在正在转换为移动网站。除了一个小故障,一切工程顺利。我通过POST请求使用某个第三方API,它在应用程序中正常工作,但在移动网站版本中失败。 仔细看看,似乎AngularJS(我猜实际上是浏览器)是首先发送一个OPTIONS请求。我
我开发了一个PhoneGap应用程序,现在正在转换为移动网站。除了一个小故障,一切工程顺利。我通过POST请求使用某个第三方API,它在应用程序中正常工作,但在移动网站版本中失败。
仔细看看,似乎AngularJS(我猜实际上是浏览器)是首先发送一个OPTIONS请求。我今天学到了很多关于CORS的,但我似乎不知道如何禁用它。我没有访问该API(所以在那一侧的更改是不可能的),但他们已经添加了我正在工作的域到他们的Access-Control-Allow-Origin头。 这是我说的代码: var request = { language: 'fr',barcodes: [ { barcode: 'somebarcode',description: 'Description goes here' } ] }; } var config = { headers: { 'Cache-Control': 'no-cache','Content-Type': 'application/json' } }; $http.post('http://somedomain.be/trackinginfo',request,config).success(function(data,status) { callback(undefined,data); }).error(function(data,status) { var err = new Error('Error message'); err.status = status; callback(err); }); 如何防止浏览器(或AngularJS)发送该OPTIONS请求,只是跳到实际的POST请求?我使用AngularJS 1.2.0。 提前致谢。
预检是由您的Content-Type of“application / json”触发的。防止这种情况的最简单的方法是将Content-Type设置为“text / plain”。 application / x-www-form-urlencoded& multipart / form-data内容类型也是可以接受的,但你当然需要格式化你的请求有效负载。
如果在进行此更改后仍然看到预检,则Angular可能还会向请求中添加X标头。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |