我尝试使用jquery ajax在javascript中从客户端请求Google工作表。
以下代码适用于Chrome,但在Firefox中失败。
问题:如何让它在Firefox中运行?
如果它是服务器配置问题,那么这是否意味着无法从Firefox客户端链接到Google云端硬盘文档?
以下是代码:
var url = 'http://docs.google.com/spreadsheets/export?id=1-on_GfmvaEcOk7HcWfKb8B6KFRv166RkLN2YmDEtDn4&exportFormat=csv';
$.ajax({
url : url,
type : 'GET',
dataType : 'text',
success : function(res, status){
console.log('status : ' + status);
console.log(res);
},
error : function(res, status, error){
console.log('status : ' + status);
console.log(res);
console.log(error);
}
});
在Chrome中,我获得了307响应,然后获得了包含所需数据的200响应。 在Firefox中,我得到的响应只有200,但是错误消息类似于"缺少Access-Control-Allow-Origin标头,同源策略不允许获取此资源"。
答案 0 :(得分:3)
问题是var React = require('react');
var Material = require('material-ui');
module.exports = React.createClass({
render: function () {
return (<div></div>);
}
});
没有在重定向上设置CORS头。并且Chrome没有遵守规范,因为没有强制执行,因此存在各种安全漏洞。
答案 1 :(得分:2)
docs.google.com
位于Chrome的HSTS预加载列表中。 http://docs.google.com
的请求被透明地重写为https://docs.google.com
,因此不会发生重定向。
我认为如果Firefox提取HSTS预加载列表的更新副本,这将自行解决。正如Anne所说,只需直接将链接更改为https
即可解决您的使用案例。
答案 2 :(得分:0)
我找到了一种解决方法,通过稍微不同地配置Google云端硬盘并使用JSONP:
1)在Google云端硬盘中,在网络上发布文档&amp;将共享选项设置为公共
2)使用JSON类型链接以JSON格式导出数据,它看起来像:“http://spreadsheets.google.com/feeds/list/YOUR_FILE_ID/od6/public/values?alt=json&callback=myCallback”。您需要附加&amp; callback = myCallback才能使用JSONP。您可以使用jQuery进行JSONP调用。
3)要使用数据,您需要定义url中指定的回调函数,在本例中为“myCallback”
我在不同的答案中提到了类似的程序,但我认为在这里提及它也很有用,因为它直接与我面临的问题有关。