我正在尝试实现 OAUTH 以访问 Flickr API。我对 flickr.com 的 AJAX 调用一直失败。
示例错误消息:
XMLHttpRequest cannot load http://www.flickr.com/services/oauth /request_token?oauth_callback=oob&oauth…signature_method=HMAC-SHA1&oauth_timestamp=1368375405647&oauth_version=1.0. Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin.
最初我使用 chrome 并将 html 文件读取为 file://path。我曾经收到错误“访问控制允许来源不允许空值”。我通过将 html 文件复制到“本地 IIS 服务器”、“本地 python 网络服务器”和“远程网络服务器”来解决这个问题。我使用 > python -m http.server 8080' 创建了 python Web 服务器
我意识到我使用 XMLHttpRequest 对 flickr.com 的跨浏览器调用失败了。我尝试了此论坛中建议的各种解决方案:
- 使用较新的 Chrome 26.0.1410.64 m,我猜它支持 CORS
- 我用 --disable-web-security 启动了 chrome
- 我在本地机器上使用 python -m http.server 8080 创建了一个 Web 服务器,然后在远程机器上创建了一个 Web 服务器并将 html 文件复制到该站点
- 我将文件复制到本地 MSFT IIS 服务器
- 我在 etc/hosts 文件中定义了 URL 以避免数字 IP
我仍然收到相同的错误(错误消息中有相关的 URL)
代码剪辑:
urlString="http://www.flickr.com/services/oauth/request_token?"+
"oauth_callback="+"oob"+'&'+
"oauth_consumer_key="+consumerKey+'&'+
"oauth_nonce="+nonce+'&'+
"oauth_signature="+esignature+'&'+
"oauth_signature_method="+macAlgorithm+'&'+
"oauth_timestamp="+timeStamp+'&'+
"oauth_version=1.0";
$.ajax({
url: urlString,
success:function(data){
alert(data);
}
});