无法通过XMLHttpRequest验证休息调用

时间:2016-06-16 18:01:02

标签: javascript rest curl postman

我一直在使用邮递员来测试一个我能成功调用的API。

当我尝试通过javascript执行此调用时,我收到了身份验证错误。

网址和授权与邮差调用相匹配,当我使用curl调用这些详细信息时,我能够检索到正确的数据。

 <script type="text/javascript">

var data = new FormData();
data.append("attributeId", "");
data.append("validFrom", "");

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === 4) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "http:/restpAPI/test");
xhr.setRequestHeader("authorization", "Basic asdsadsadjlafdkfjkldfj==");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.setRequestHeader("postman-token", "dsadasd-asdsad-asd-asd-aasd");
xhr.send(data);


  </script>

当我使用此脚本运行本地网页时,我得到401说未授权。

JavaScript代码和postman或cURL之间有什么区别,有没有一种从JavaScript进行身份验证的方法?

更新

我发现使用授权密钥设置RequestHeader会将请求从get转换为选项。这导致错误。

1 个答案:

答案 0 :(得分:1)

虽然HTTP标头应该不区分大小写,您是否尝试使用标题大小写(var fetchedResultsController: NSFetchedResultsController { let moc = DatabaseController.sharedInstance.managedObjectContext let fetchRequest = NSFetchRequest() let entity = NSEntityDescription.entityForName("Coctail", inManagedObjectContext: moc) fetchRequest.entity = entity fetchRequest.fetchLimit = 10 fetchRequest.sortDescriptors = [NSSortDescriptor(key: "name", ascending: true)] let aFetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: moc, sectionNameKeyPath: nil, cacheName: nil) aFetchedResultsController.delegate = self do { try aFetchedResultsController.performFetch() } catch { fatalError("\(error)") } return aFetchedResultsController } )设置标题名称?