2013-02-10 32 views
0

我正在使用domainAPI站点(目前免费)来处理域可用性检查。他们的简要文件是here如何使用jQuery Ajax发送身份验证标头

我是新来的大多数人,所以我可能会忽略一些明显的东西。标题的第二部分是我的用户名和密码,以格式username:password加密为base64。如果我直接访问网址,那么相同的用户名和密码会成功访问我。

我到目前为止的代码如下,这仍然失败:

$('#domain').keyup(function() { 
    $("#loading").show(); 
    $.ajax({ 
     url: 'http://api.domainapi.com/v1/availability/example.com', 
     type: 'GET', 
     datatype: 'json', 
     success: function() { alert("Success"); }, 
     error: function() { alert('Failed!'); }, 
     beforeSend: function setHeader(xhr) {xhr.setRequestHeader('Authorization', 'Basic ZW1iZXJza2VjaDp6eWFrc21hdnNvenY=');} 
    }); 
}); 
+0

通常,标头设置在服务器端(如PHP)。原因认证需要一些服务器检查和会话集。 – 2013-02-10 07:17:36

回答

0

它看起来像你运行到跨域问题在这里。

如果服务器启用了CORS支持(请参阅http://en.wikipedia.org/wiki/Cross-origin_resource_sharing以获取更多信息),那么AJAX请求只能跨域执行,并且api.domainapi.com的快速检查并不表示它会这样做。如果你打开浏览器的控制台,你应该会收到一条错误消息。

为了解决这个问题,你需要在你自己的服务器上实现某种代理(这是因为它运行在与你的网页相同的域上,应该可以用作AJAX'目标'),将转发请求到api.domainapi.com

+0

感谢您的回复!我明白你的意思。创建一个访问domainapi网站的php页面,并使用ajax访问该页面。 domainapi网站为我提供了一些头文件用于提出请求,但我并不确定如何制作一个能够做到这一点的PHP页面。我需要使用cURL还是什么?这是我的: <?php header(“GET/encrypted-area HTTP/1.1”); header(“Host:api.domainapi.com/v1/availability/freedomain.com”); header(“Authorization:Basic ZW1iZXJza2VjaDp6eWFrc21hdnNvenY =”); ?> – themartin 2013-02-10 09:01:57

+0

如果您总是使用您自己的用户名/密码来检查域的可用性,请通过域名检查使用PHP页面的'.ajax'请求,执行从PHP到'api的请求。 domainapi.com'(使用cURL听起来不错,但我不做PHP),并返回结果(所以'$ .ajax'可以处理它)。 – robertklep 2013-02-10 09:07:51