不允许通过 REST api 和 jquery 405 方法创建 Jira 问题

Posted

技术标签:

【中文标题】不允许通过 REST api 和 jquery 405 方法创建 Jira 问题【英文标题】:create Jira issue via REST api and jquery 405 method not allowed 【发布时间】:2012-12-02 18:38:01 【问题描述】:

使用以下 jquery 调用时,我收到 http 405 method not allowed 错误消息。 有谁知道如何解决这个问题?是因为https吗?我也尝试了 GET 和 PUT 类型,结果相同

  function make_base_auth(user, password) 
        var tok = user + ':' + password;
        var hash = btoa(tok);
        return "Basic " + hash;
       
function createJiraIssue() 

        var datos = 
            "fields": 
                "project":
              
                  "key": "HELP"
             ,
                "summary": "Test Ticket",
                "description": "Creating of an issue using project keys and issue type  names using the REST API",
                "issuetype": 
                    "name": "Bug"
                ,
                "assignee":  "name": "sim" 
            
        ;

        var parameters = JSON.stringify(datos);
        var req = $.ajax(
            url: 'https://xxx.jira.com/rest/api/2/issue/',
            type: "POST",
            data: parameters,
            contentType: 'application/jsonp',
            dataType: 'jsonp',
            async: false,
            processData: false,
            beforeSend: function (xhr) 
            xhr.setRequestHeader('Authorization', make_base_auth(user, password));
            ,
            error: function (errmsg) 
                alert('error ocured:' + errmsg.responseText);
            ,
            success: function (text) 
                alert(text);
            ,

        );
    

编辑 它一定要是, 内容类型:'应用程序/json', 数据类型:'json' 并且 405 错误消失了。

但现在代码最终出现在错误回调中。我将其中的警报功能更改为 alert('error ocured:' + errmsg.error); 它给了我这个: 发生错误:

function ()
if(!e)
  var c=arguments,g,h,i,j,k;b&&(k=b,b=0);
  for(g=0,h=c.length;
        g<h;g++)i=c[g],j=d.type(i),j==="array"?f.done.apply(f,i):j==="function"&&a.push(i);
        k&&f.resolveWith(k[0],k[1])
 return this

在 chrome 中,我在控制台中收到错误消息: XMLHttpRequest 无法加载 https://xxx.jira.com/rest/api/2/issue/。 Access-Control-Allow-Origin 不允许来源http://localhost:49592。 有人知道错误是什么吗?

【问题讨论】:

【参考方案1】:

我不确定这是否可能。你得到的错误是说你不能做跨域 XMLHttp 请求。你可以在this answer找到更多信息。

绕过它的一种方法是使用 php(或任何其他语言)创建一个本地 API,它将为 jQuery 进行的 ajax 调用提供服务。

例如,写一个PHP page 将通过REST API 创建问题,然后使用javascript 将所有需要的详细信息发布到此页面。

如果您需要任何帮助,请告诉我。

编辑

使用 C# 来实现,最简单的方法可能是使用 JiraRestClient.NET 之类的东西。

如果您喜欢自己编写代码,这里有一些关于 connecting to Jira using REST 的信息。

【讨论】:

你也知道用c#怎么做吗?【参考方案2】:

您的内容类型应该是'application/json',而不是'application/jsonp'

【讨论】:

是的,你是对的,它必须是,contentType:'application/json',甚至是 dataType:'json',但现在我得到错误回调:错误发生:(没有 responseText) ? 我改为 alert('error ocured:' + errmsg.error);它给了我这个:function ()if(!e)var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h= c.length;g 这……很难读。请修改您的问题以包含新信息。【参考方案3】:

我遇到了同样的问题,因为我使用的是 HTTP 而不是 HTTPS。

【讨论】:

以上是关于不允许通过 REST api 和 jquery 405 方法创建 Jira 问题的主要内容,如果未能解决你的问题,请参考以下文章

wcf REST 服务和 JQuery Ajax Post:方法不允许

Java Spring REST API CORS 不适用于通过 jQuery 和 Chrome 的 DELETE 请求

使用 jquery 查询 wcf rest 服务(不允许 405 方法)

使用 JSONP 和 JQuery 调用 REST Api

使用 jQuery-Ajax REST API 调用的 iframe 显示不完整的页面

apache_conf DISMISS PUBLIC ACCESS到WordPress REST API;只允许通过相同的域访问API。允许所有管理员访问......动态IP ...