我正在尝试使用lastFM API。我已经开始使用一个非常基本的模板,我想要做的就是连接到LastFM API并对自己进行身份验证。我的HTML页面上有一个按钮 -
<button id="auth">AUTHENTICATE</button>
这是处理点击事件的jQuery函数 -
$(document).ready(function() {
$("#auth").click(function() {
console.log("authenticate called");
var myUrl = "http://www.last.fm/api/auth/?api_key=32*************8a*****2";
/*$.get(url,function(data) {
alert("data");
});*/
$.ajax({
// The 'type' property sets the HTTP method.
// A value of 'PUT' or 'DELETE' will trigger a preflight request.
type: 'GET',
// The URL to make the request to.
url: myUrl,
xhrFields: {
withCredentials: false
},
crossdomain : true,
headers: {
// Set any custom headers here.
},
success: function(data) {
// Here's where you handle a successful response.
},
error: function(data) {
console.log(data);
});
});
});
我在我的localhost上运行它。从AJAX请求中可以看出,它支持CORS。我还可以看到CORS标头属性被添加到我的请求标头中。但是服务器需要像CORS标头一样响应Access-Control-Allow-Origin。但响应不包含任何此类标头。
但是lastFM API支持CORS,所以不应该在响应头中发送这些属性吗?此外,现在我如何使用CORS来验证我的应用程序?
P.S - 我知道我可以使用JSONP,但我想知道是否有任何方法可以使用CORS处理这个问题?
答案 0 :(得分:0)
感谢@potatopeelings,我得到了答案。我们需要的不是调用身份验证URL,而是将其重定向到单独的页面,该页面将要求我授权应用程序使用lastFM帐户。我还提供了一个回调URL,在我授权后,它将重定向到我的应用程序。 所以我的最终网址就像 -
myURL = "http://www.last.fm/api/auth/?api_key=XXX&cb=http://localhost:63342"
我删除了我的AJAX调用以执行以下操作 -
window.location.replace(myUrl);