如何使用dataType:'jsonp'但仍然在Accept头中有application/json?

Ars*_*nko 4 jquery json jsonp http

我想访问另一个域上的REST服务.如果,在JQuery中,我指定:

dataType: 'json'
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,它失败了,因为对于跨域调用,必须使用JSONP.

当我将其更改为:

dataType: 'jsonp'
Run Code Online (Sandbox Code Playgroud)

预计到工作,但因为服务器期望失败application/jsonapplication/xmltext/html等,但不是*/*由JSONP请求一起发送.

有没有办法迫使JQuery的投入application/jsonAccept请求头,而做一个JSON请求?

Dar*_*rov 5

AFAIK jQuery的JSONP实现使用<script>注入DOM 的标记(因此仅对GET动词的限制),您无法控制Accept请求内容类型标头.在src此的script标签简单地指向远程域网址.浏览器只是简单地获取发送常规GET请求的基础端点.

因此,如果您希望能够为跨域调用设置请求标头,则必须在域上设置服务器端脚本,该脚本将调用委托给远程域(并设置相应的标头),然后将AJAX请求发送到你的脚本.