Angular + CORS - 在Chrome中不起作用/如何修复和调试?

时间:2015-09-12 15:11:57

标签: javascript angularjs google-chrome cors

第三方提供了服务,我通过POST multipart / form-data访问它。我使用$ http angular来进行通话,但它只能在Chrome中使用。如果我使用IE它工作正常。如何以更好的方式修复/调试它? 使用高级REST客户端,我也能够得到响应。

万一有帮助,这里是http电话:

var fd = new FormData();
var blob = new Blob([file], {type:'text/xml'}); //just an xml file on the scope..
fd.append('xml', blob, 'myfile.xml');

$http({
    url: "https://myurl.at.third-party/mypath",
    method: 'POST',
    headers: {
        'Content-Type': 'multipart/form-data',
        'X-A-Custom-Header-They-Require': '<XMLData><User>myuser</User></XMLData>',
    },
    data: fd,
    transformRequest: angular.identity
}).then(function(response) {
    //do stuff
}, function(error) {
    //handle error
});

在调用的IE中,我相信CORS在服务器上正确设置,但它是IE,所以谁知道呢? :)

如果我查看“Chrome网络”标签,我可以看到它首先进行OPTIONS调用,得到一个OK回复,但之后我没有看到POST或得到任何回复。

有谁知道我该怎么办?

谢谢!

1 个答案:

答案 0 :(得分:0)

正如@Quentin所说,请查看Chrome开发工具中的控制台选项卡,查看网络选项卡并查看每个与CORS相关的标头值。

此外,您可以在此处了解CORS的工作原理:https://stackoverflow.com/a/25496072/827168这可以帮助您发现问题的根源。