代码之家  ›  专栏  ›  技术社区  ›  Isaac Gomes

使用JSONP使用Jquery重新挖掘API请求,抛出mime类型错误

  •  0
  • Isaac Gomes  · 技术社区  · 7 年前

    Redmine API support for jsonp .

    因此,我尝试了不同的方式使用Jquery发出请求,我已经搜索了“mime类型”错误,并尝试使用答案解决问题,但控制台中的抛出错误始终是相同的(谷歌浏览器):

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

    在Firefox中:

    语法错误:缺失;before语句

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

    enter image description here

    这是我的代码:

    $("#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客户端)发出此请求,它可以工作,但在我的本地主机Laravel应用程序中无法工作。

    请求返回 200 ok ,但Jquery请求不会进入success函数。我甚至在搜索时尝试了一些解决方案,比如:

    • 添加一些标题
    • 通过 format=json 在url中

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

    2 回复  |  直到 7 年前
        1
  •  1
  •   Isaac Gomes    6 年前

    谢谢大家。但我只是通过沟通解决了这个问题。Redmine API接受jsonp,但在默认情况下,这是禁用的。因此,如果域不允许,我就不能用jsonp发出请求。不可能。

    幸运的是,我遇到了我试图访问的redmine域管理员。我要求在 ( docs 说吧) allowed jsonp . 他成功了,我解决了我的问题。

        2
  •  0
  •   Stephan Wiehr    6 年前

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

    在Firefox控制台中出现错误时,您是否与调试器检查了它指向的代码行?可能错误在该文件中的其他JS代码中。。。

    GET请求在不放置数据类型和内容类型的情况下通常对我来说工作得很好。使用错误函数,您可以进一步调试出错的地方。

    试试这样的方法怎么样(扩展名“.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();
      }
    });