首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么JSONP调用返回禁止的403,而URL却可以在浏览器中访问

为什么JSONP调用返回禁止的403,而URL却可以在浏览器中访问
EN

Stack Overflow用户
提问于 2014-04-11 21:25:21
回答 1查看 478关注 0票数 0

我知道有几个与此相关的问题--但我找不到我的答案。另外,我想要更多的澄清。

我在本地运行一个rails应用程序,它对作为API使用的sinatra应用程序进行jsonp调用。

当我把这个网址放到我的浏览器中时,我最终得到了正确的响应,但是当我使用$.getJSON通过jQuery进行这个调用时,我得到了一个禁止的403错误。据我所知,$.getJSON正在根据url发出jsonp请求,其中包含callback=?参数。

我正在试图找出是什么导致了403错误。api应用程序上是否有一些默认配置,因为脚本是从包含的script标记中请求的,所以会拒绝该请求?

现在,api请求返回json数据。我认为查看回调参数并构造一个实际调用回调的响应是我的责任……

因此,如果url是http://myapi.com?callback=blah,那么我应该返回如下内容:

废话({foo:'bar'})

但我不知道403到底是怎么回事。如果返回的是api服务器,那么它试图保护的是什么?

下面是jsonp调用的示例:

代码语言:javascript
复制
$.getJSON( 'http://myapi.com?callback=?', {biz: 'buzz'})

我看到一些关于为跨源问题设置头部的帖子--但不确定为什么jsonp请求需要这样做。

EN

Stack Overflow用户

发布于 2014-04-12 01:27:21

您需要向sinatra api应用程序添加jsonp支持。

以下是将jsonp支持添加到sinatra应用程序的一种方法

rack-contrip gem添加到Gemfile中

代码语言:javascript
复制
gem 'rack-contrib'

将以下内容添加到您的config.ru

代码语言:javascript
复制
require 'rack/contrib'
use Rack::JSONP

重新启动sinatra应用程序并开始从javascript测试jsop

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23013923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档