【发布时间】:2015-07-27 01:40:21
【问题描述】:
我正在尝试通过 PHP 后端在 MySQL 数据库中更新/插入数据。我正在使用 AngularJS 构建前端,并使用 $http 服务与 REST API 进行通信。
我的设置如下所示:
我正在通过 $httpProvider 设置标头:
$httpProvider.defaults.withCredentials = true;
$httpProvider.defaults.headers = {'Content-Type': 'application/json;charset=utf-8'};
POST-Call 看起来像这样:
return $http({
url: url,
method: "POST",
data: campaign
});
Chrome 中的开发控制台向我展示了这一点:
当我从 POST 更改为 PUT 时,我发送的是 OPTIONS 调用而不是 PUT。并且内容类型只切换到content-type。
我的请求负载作为对象发送:
如何正确设置标题?
编辑:
PHP 后端设置了一些标头:
$e->getResponse()
->getHeaders()
->addHeaderLine('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
$e->getResponse()
->getHeaders()
->addHeaderLine('Access-Control-Allow-Origin', '*');
有什么遗漏吗?
【问题讨论】:
-
application/json 是默认的内容类型集。如果在某处将其设置为 text/plain,则需要在代码中搜索
-
@Chandermani 我的代码相当小。我有一个 api.js 文件,我在其中执行此操作,还有一个 .config.js 文件,我当前在其中手动设置了标头。
-
我同意这个共识。不需要您的标头。一些非常奇怪的事情正在发生。我浏览了我用 Angular 编写的每个
http.post,它们都很简单。标题是假定的。
标签: javascript json angularjs