我想访问另一个域上的 REST 服务。如果在 JQuery 中,我指定:
dataType: 'json'
正如预期的那样,它失败了,因为对于跨域调用,必须改用 JSONP。
当我将其更改为:
dataType: 'jsonp'
它应该工作,但失败了,因为服务器需要 application/json
或 application/xml
或 text/html
等。 ,但不是 */*
,由 JSONP 请求发送。
有没有办法强制 JQuery 在执行 JSON 请求时将 application/json
放在 Accept
请求 header 中?
最佳答案
AFAIK jQuery 的 JSONP 实现使用 <script>
注入(inject)到 DOM 中的标记(因此仅限于 GET 动词),您无法控制 Accept
请求内容类型 header 。 src
这个 script
标记只是指向远程域 url。浏览器只是通过发送常规 GET 请求来获取底层端点。
因此,如果您希望能够为跨域调用设置请求 header ,则必须在您的域上设置一个服务器端脚本,它将调用委托(delegate)给远程域(并设置相应的 header ),然后发送对您的脚本的 AJAX 请求。
关于jquery - 如何使用数据类型 : 'jsonp' but still have application/json in Accept header?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11725591/