使用 Jquery 的 Redmine API 请求,使用 JSONP,引发 mime 类型错误

Posted

技术标签:

【中文标题】使用 Jquery 的 Redmine API 请求,使用 JSONP,引发 mime 类型错误【英文标题】:Redmine API request with Jquery, using JSONP, throws mime type error 【发布时间】:2018-04-06 02:02:23 【问题描述】:

我正在尝试使用 Redmine API 使用 Jquery 发送请求,它表示它有 support for jsonp。

所以,我尝试了不同的方法来使用 Jquery 发出请求,并且我已经搜索了“mime 类型”错误并尝试使用答案来解决,但是控制台中的 throw 错误始终相同(Google Chrome):

拒绝执行脚本 'http://redmine_domain_sample/users/current.json?callback=jQuery21309665620597314108_1508906065651&_=1508906065652' 因为它的 MIME 类型('application/json')是不可执行的,并且 已启用严格的 MIME 类型检查。

在 Firefox 中:

语法错误:缺失;声明之前

apponiting 到真正返回我的数据的 json。当我点击时,我可以看到数据:

这是我的代码:

$("#redmine").click(function() $.ajax( type:"get", url:"http://redmine_domain_sample/users/current.json", dataType: "jsonp", contentType: "application/javascript", success: function(response) alert(response.firstname); exibeProjetosRedmine(); ); );

这个 url 发出一个身份验证请求,它有效,所以当我输入登录数据时,会出现顶部的错误。

如果我从扩展客户端发出这个请求,例如,chrome Advanced REST Client,它可以工作,但在我的本地 Laravel 应用程序中没有。

请求返回200 ok,但Jquery 请求没有转到成功函数。我什至在搜索时尝试了一些解决方案:

添加一些标题 在网址中传递format=json

但不工作。 我做错了什么?我相信这是一个简单的错误,但我真的不明白。谢谢。

【问题讨论】:

这听起来像是服务器问题(apache、ngnix),而不是 Redmine 问题...看看这里:***.com/questions/24528211/… 如果您尝试使用像我这样的外部 API,这将不起作用 服务器应该返回 application/javascript 作为内容类型。 Link 【参考方案1】:

谢谢大家。但我只是通过沟通解决了这个问题。 Redmine API 接受 jsonp,但默认情况下是禁用的。所以,如果域不允许,我不能用 jsonp 提出请求。没办法。

很高兴,我遇到了我尝试访问的 redmine 域管理员。我要求允许在 管理配置 (docs 这么说)allowed jsonp。他成功了,我解决了我的问题。

【讨论】:

【参考方案2】:

它在 Chrome REST 客户端上运行良好的事实已经表明 JavaScript 代码存在问题,而不是 Redmine API 存在问题。

在 Firefox 控制台中收到错误时,您是否使用调试器检查它指向哪一行代码?也许错误出现在该文件中的其他一些 JS 代码中......

GET 请求通常对我来说甚至可以很好地工作,而无需放置 dataType 和 contentType。使用错误功能,您可以进一步调试出现的问题。

尝试这样的事情怎么样('.json' 扩展名已经告诉 Redmine 你想要返回什么格式):

$.ajax(
  url: "http://redmine_domain_sample/users/current.json",
  type: "GET",
  error: function(jqXHR, textStatus, errorThrown) 
    if (jqXHR.status == 200) 
      alert(textStatus);
      alert(errorThrown);
     else 
      alert(textStatus);
      alert(errorThrown);
    
  ,
  success: function(response, textStatus, jqXHR) 
    alert(response.firstname);
    exibeProjetosRedmine();
  
);

【讨论】:

以上是关于使用 Jquery 的 Redmine API 请求,使用 JSONP,引发 mime 类型错误的主要内容,如果未能解决你的问题,请参考以下文章

调用Redmine API时jsonp得到404

无法进行客户端 API Redmine 身份验证

text APIアクセスキーを用いて,Ruby / RailsからRedmineのREST APIにアクセスする#memo #ruby#web-api #redmine

阿里云ECS+CentOS 7.0+Docker+Redmine环境搭建

redmine整合GIT版本库

我装的redmine版本是0.8.4的,现在的问题是,提交了bug之后就没有办法修改了,页面没有修改或编辑按钮,