官方文档中描述的$ http.jsonp方法似乎总是执行get请求:http://docs.angularjs.org/api/ng。$ http#methods_jsonp。
我已尝试将配置选项设置为“POST”,但仍会发送GET:
$http.jsonp('/api/new?callback=JSON_CALLBACK', {method: 'POST'});
我还尝试设置数据参数,希望angular会切换到POST:
$http.jsonp('/api/new?callback=JSON_CALLBACK', {data: {stuff: true}});
但它仍然没有:)
关于这样的帖子:
$http.post('/api/new?callback=JSON_CALLBACK')
它确实显示了POST,但是没有使用JSON_CALLBACK进行角度魔术,并产生以下JS错误:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://xxx.yyy.zzz' is therefore not allowed access.
(API与应用程序不在同一服务器上,这是JSONP的重点)。
谷歌在这个问题上最无益,通过角度来源阅读并不是最简单的任务。那么如何使用angular?
创建JSONP POST请求答案 0 :(得分:30)
您无法使用JSON-P(有或没有Angular)发出POST请求
JSON-P请求的工作原理是生成具有<script>
属性的src
元素。这将始终触发GET请求。
如果您想使用JavaScript发出跨域POST请求,那么您必须使用XMLHttpRequest(并让服务器根据the CORS specification提供合适的访问控制头)或通过托管页面的服务器代理请求