如何在ajax中重现成功的curl调用

Posted

技术标签:

【中文标题】如何在ajax中重现成功的curl调用【英文标题】:how to reproduce successful curl call in ajax 【发布时间】:2014-03-01 08:06:01 【问题描述】:

在 Charles 代理中,我捕获了使用 curl 时发出的成功请求 - 它返回了一些 json。我整天都在尝试将它变成一个 ajax 调用,但都失败了——想知道是否有人可以重新审视它?我通过标头向提供此 json 的服务发送令牌


"category": [
    "id": 1,
    "name": "aaa",
    "description": "anything..."
, 
    "id": 2,
    "name": "ccc",
    "description": "desc 1111..."
, 
    "id": 3,
    "name": "ddd",
    "description": "desc..."
]

charles dump 用 curl 提出的良好请求

    GET /api/v1/category HTTP/1.1
    User-Agent  curl/7.30.0
    Host    myurl.com
    Accept  */*
    Authorization   Token token=6ff1fed470ec2ddaf8b3af9584619902

原始信息

    URL http://myurl.com/api/v1/category
    Status  Complete
    Response Code   200 OK 
    Protocol    HTTP/1.1
    Method  GET
    Kept Alive  No
    Content-Type    application/json; charset=utf-8
    Client Address  /127.0.0.1
    Remote Address  myurl.com/23.23.121.64

我的尝试

$.ajax(
beforeSend: function (xhr)  xhr.setRequestHeader ('Authorization', 'Token 6ff1fed470ec2ddaf8b3af9584619902') ,
type: "GET",
url: "http://myurl.com/api/v1/category",
dataType: "json"
).done(function( msg ) 
console.log( msg );

).fail(function(jqXHR, textStatus, errorThrown) 
console.log( "Request failed: " + textStatus );
console.log( errorThrown );
);

提前致谢!

【问题讨论】:

【参考方案1】:

你还没有发布你尝试的诊断信息,所以我只是从你的代码中猜测。

    你发送

    Authorization: Token 6ff1fed470ec2ddaf8b3af9584619902

    来自 XHR,但是

    Authorization: Token token=6ff1fed470ec2ddaf8b3af9584619902

    来自 curl — 请注意 token=

    您必须确保 http://myurl.com/api/v1/category 支持 cross-origin resource sharing 或与执行该 javascript 代码的页面位于同一来源(域)。

如果这些没有帮助,请发布您收到的任何错误消息。

【讨论】:

感谢您的回复。我的尝试是为客户端设置一个单独的 api,因此将查看 CORS 支持所需的内容。到目前为止,我正在 JSONP 中返回结果。有趣的是在 Charles Proxy 中,如果我编辑一个失败的请求并粘贴到新行“授权:令牌令牌 = 1234 等 .. 然后它可以工作。但我无能为力,但我无能为力。 @MikeW 如果您想要 JSONP,您的 $.ajax 调用不正确,请查看文档。否则,请为您的失败案例发布诊断信息。

以上是关于如何在ajax中重现成功的curl调用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP、cURL、ajax 流式传输实时数据并将其呈现在折线图中

如何在 jquery ajax 成功函数中引用调用 dom 元素?

如何在 AJAX 成功函数中调用 element.onload?

如何在 AJAX 中形成授权 CURL 请求? [复制]

如何在 ajax 调用成功中访问 jquery 对象 - 未捕获的错误:SYNTAX_ERR:DOM Exception 12

如何在从 jquery ajax 调用成功返回时显示 JQuery 对话框