我正在尝试从托管某些帐户数据的服务器执行简单的GET请求.该请求需要Authorization标头才能正常运行.我已经执行了GET请求并在Postman中成功检索了数据,但是尝试通过Ajax在
Javascript中执行此操作会导致“无效的HTTP状态代码405”错误.
下面是一个小提琴的链接和邮差设置的屏幕截图.谢谢.!
$.ajax({ beforeSend: function(xhrObj){ xhrObj.setRequestHeader("Authorization","Bearer tj7LTLycpQC6DRup5BkHUO7uVbYaAZI40"); },type: "GET",url: "https://api05.iq.questrade.com/v1/accounts",success: function(e){ console.log(e) } });
解决方法
来自Chrome的JS控制台:
Failed to load resource: the server responded with a status of 405 (Method Not Allowed)
因为您要添加Authorization标头,所以您使请求变得复杂.这要求浏览器发出preflight OPTIONS request以请求发送复杂请求的权限.
您发出请求的服务器正在响应,说OPTIONS请求不允许该URL.
您需要修改服务器,以便它适当地响应预检CORS请求.
Postman不需要发出预检请求,因为您的浏览器信任Postman的代码.它不知道它是否可以信任它从JSFiddle(AKA潜在邪恶的黑客网站)收到的代码与数据api05.iq.questrade.com(AKA潜在的网上银行或公司内联网网站)愿意与它共享.