如何在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 调用成功中访问 jquery 对象 - 未捕获的错误:SYNTAX_ERR:DOM Exception 12