我正在制作一个简单的webapp,它正在与一个我无法控制的服务器通信。
起初,我配置了一个自定义的$resource get请求,它运行得很好。现在我需要做一个post请求,从同一个服务器请求一些信息。这个dind根本不起作用,因为服务器似乎没有为选项设置访问控制allow origin头,但为get和post设置了访问控制allow origin头。知道了这一点,我发现自己可以做到(在另一篇文章中发现了这一点):

app.config(['$httpProvider', function ($httpProvider) {
//Reset headers to avoid OPTIONS request (aka preflight)
$httpProvider.defaults.headers.common = {};
$httpProvider.defaults.headers.post = {};
$httpProvider.defaults.headers.put = {};
$httpProvider.defaults.headers.patch = {};
}]);

这工作很好,但似乎有点像一个丑陋的黑客对我来说,我想知道如何做更好的方式。

最佳答案

在大量搜索一个答案之后,您所要做的就是将content type header设置为text/plain,以避免options request/preflight。执行此操作的自定义操作如下:

$resource('yourURL', {}, {
    customAction: {method:'POST', headers:{'Content-Type':'text/plain'}}
});

我不需要改变任何东西,除了这个让它工作。

09-18 03:32