jquery - 如何使用数据类型 : 'jsonp' but still have application/json in Accept header?

标签 jquery json http jsonp

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

dataType: 'json'

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

当我将其更改为:

dataType: 'jsonp'

它应该工作,但失败了,因为服务器需要 application/jsonapplication/xmltext/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/

相关文章:

javascript - 在 title 属性中添加按钮链接 - HTML

jQuery如何动态添加索引号到表中

jquery - 最好的 jquery 工具提示插件是什么?

jquery - 在 jQuery 中,这三种检查 DOM 设置是否相同的方法/为什么是等效的?

javascript - 将 JSON 日期/日期(1388624400000)/转换为 Excel 中的日期

javascript - 如何使用 Javascript slider 的值

javascript - 如何在 Javascript 中增加对象的属性?

javascript - CORS 预检请求的奇怪问题在 IE 11 上失败

azure - 无法通过浏览器/HTTP 访问 Azure Linux 虚拟机

Apache 配置 : effect of explicit :80 in http header field (host)