如何以角度形式发出JSONP POST请求?

djf*_*jfm 16 javascript angularjs

官方文档中描述的$ http.jsonp方法似乎总是执行get请求:http://docs.angularjs.org/api/ng.$ http#methods_jsonp.

我已经尝试将配置选项设置为'POST'但它仍然发送一个GET:

$http.jsonp('/api/new?callback=JSON_CALLBACK', {method: 'POST'});
Run Code Online (Sandbox Code Playgroud)

我也试过设置一个数据参数,希望angular会切换到POST:

$http.jsonp('/api/new?callback=JSON_CALLBACK', {data: {stuff: true}});
Run Code Online (Sandbox Code Playgroud)

但它仍然没有:)

至于制作这样的帖子:

$http.post('/api/new?callback=JSON_CALLBACK')
Run Code Online (Sandbox Code Playgroud)

它确实显然是一个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.
Run Code Online (Sandbox Code Playgroud)

(API与应用程序不在同一服务器上,这是JSONP的重点).

谷歌在这个问题上最无益,通过角度来源阅读并不是最简单的任务.那么如何用angular创建一个JSONP POST请求呢?

Que*_*tin 31

你不能使用JSON-P(有或没有Angular)发出POST请求

JSON-P请求通过生成<script>具有src属性的元素来工作.这将始终触发GET请求.


如果要使用JavaScript进行跨域POST请求,则必须使用XMLHttpRequest(并根据CORS规范让服务器提供合适的访问控制头)或通过托管页面的服务器代理请求.

  • 该死的,当然!谢谢你,一旦我被允许就接受这个. (2认同)