如何跳过AngularJS中的OPTIONS预检请求

前端之家收集整理的这篇文章主要介绍了如何跳过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标头。

猜你在找的Angularjs相关文章