angularjs - 避免在 AngularJS 中使用 $resource 发送选项(预检)的最佳方法是什么

标签 angularjs http post angular-resource

我正在制作一个简单的网络应用程序,它与我无法控制的服务器进行通信。

起初我配置了一个自定义的 $resource GET 请求并且工作正常。现在我需要做一个 POST 请求来从同一台服务器请求一些信息。这根本不起作用,因为服务器似乎没有为 OPTIONS 设置 Access-Control-Allow-Origin header ,但它为 GET 和 POST 设置。知道这一点后,我发现我可以做到(在另一篇文章中找到):

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 = {};
}]);

这工作正常,但对我来说似乎有点像一个丑陋的 hack,我想知道如何以更好的方式做到这一点。

最佳答案

经过大量搜索后发现,您所要做的就是将 Content-Type header 设置为 text/plain 以避免 OPTIONS 请求/预检。您为这样的自定义操作执行此操作:

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

除此之外,我无需更改任何内容即可使其正常工作。

关于angularjs - 避免在 AngularJS 中使用 $resource 发送选项(预检)的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25552300/

相关文章:

angularjs - UI-Grid 分页模板可编辑

javascript - 重定向不起作用

c++ - 二进制通过http

asp.net - 来自 ASP.NET 网页 (WebMatrix) 的 jQuery 帖子

PHP 单选按钮获取两个值

android - Android HTTPS 页面上的 POST 在回答时返回空页面

javascript - 自定义 Angular 窗口依赖项

jquery - 类型错误:无法使用 $http 读取未定义的属性 'success'

HTTP 可下载文件服务

c++ - 如何处理 HTTP 请求