我正在开发一个页面,该页面通过jQuery的AJAX支持从Flickr和Panoramio中提取图像。
Flickr方面运行良好,但是当我尝试$.get(url, callback)
从Panoramio运行时,我在Chrome的控制台中看到错误:
XMLHttpRequest无法加载http://www.panoramio.com/wapi/data/get_photos?v=1&key=dummykey&tag=test&offset=0&length=20&callback=processImages&minx=-30&miny=0&maxx=0&maxy=150。Access-
Control-Allow-Origin不允许使用Origin null。
如果我直接从浏览器查询该URL,它将正常工作。这是怎么回事,我可以解决这个问题吗?我是在错误地编写查询,还是Panoramio这样做妨碍了我的工作?
编辑
这是一些显示问题的示例代码:
$().ready(function () {
var url = 'http://www.panoramio.com/wapi/data/get_photos?v=1&key=dummykey&tag=test&offset=0&length=20&callback=processImages&minx=-30&miny=0&maxx=0&maxy=150';
$.get(url, function (jsonp) {
var processImages = function (data) {
alert('ok');
};
eval(jsonp);
});
});
编辑2
感谢达林在这方面的帮助。 上面的代码错误。 使用此代替:
$().ready(function () {
var url = 'http://www.panoramio.com/wapi/data/get_photos?v=1&key=dummykey&tag=test&offset=0&length=20&minx=-30&miny=0&maxx=0&maxy=150&callback=?';
$.get(url, function (data) {
// can use 'data' in here...
});
});
据记录,据我所知,您有两个问题:
您没有向您传递“ jsonp”类型说明符$.get
,因此它使用的是普通的XMLHttpRequest。但是,您的浏览器支持CORS(跨域资源共享),如果服务器确定,则允许跨域XMLHttpRequest。那是Access-Control-Allow-Origin
头文件进入的地方。
我相信您提到您是通过file:// URL运行它的。CORS标头有两种方式来表示跨域XHR正常。一种是发送Access-Control-Allow-Origin: *
(如果您通过到达Flickr $.get
,他们一定在发送),另一种是回显Origin
标头的内容。但是,file://
URL产生的null Origin
不能通过回显进行授权。
达林的使用建议以一种round回的方式解决了第一个问题$.getJSON
。如果看到callback=?
URL中的子字符串,将请求类型从其默认值“
json”更改为“ jsonp”确实有点魔术。
通过不再尝试从file://
URL 执行CORS请求,解决了第二个问题。
为了向其他人说明,以下是简单的故障排除说明:
$.get
并将其设置dataType
为jsonp
。$.getJSON
并包含callback=?
在URL中。http://
。通过运行的脚本file://
对CORS的支持有限。问题内容: 我正在使用以下脚本- 我尝试访问的计算机正在运行播放框架。我收到以下错误: 选项404(未找到)jquery-1.9.1.min.js:5 XMLHttpRequest无法加载。原产地不被访问控制允许来源允许的。 我已经难过了两天,有人可以帮我吗? 提前谢谢 问题答案: 问题是您正在尝试进行跨域调用(从到)。Same Origin Policy 不允许这样做,因此浏览器试图使用跨域资源
问题内容: 我看到以下错误: 使用此代码: 是什么原因引起的,如何解决? 问题答案: 在当前域之外发出ajax请求时,Javascript是受限制的。 例1:您的域名为example.com,并且您想向test.com提出请求=>您不能。 例2:您的域名是example.com,并且您想向inner.example.com发送请求,但是您不能。 例3:您的域名为example.com:80,并且您
我试图在wordpress主题中访问google drive,在下载所选文件时出现以下错误。 无法加载XMLHttpRequesthttps://drive.google.com/a/mobfish.net/file/d/0B5IETzPj-JCw832h9rdwk/view?usp=drive_web.对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“access control All
我有错误: XMLHttpRequest 无法加载 http://localhost:5984/cp_config/。当凭据标志为 true 时,不能在“访问控制-允许-源”标头中使用通配符“*”。因此,不允许访问源“http://localhost”。XMLHttpRequest 的凭据模式由 withCredentials 属性控制。 但我有一个标题: 我该如何解决这个问题?
我已经设置了一个带有套接字io的节点服务器,并尝试通过另一台服务器连接到它。但是,不同计算机上的一些浏览器会给我这个错误并使其始终重新连接: XMLHttp请求无法加载https://serverDomain.net:3000/socket.io/?EIO=3 我的js配置: 我正在使用节点 8.0 和套接字 io 2.2,您的帮助将不胜感激。 编辑:这是客户端代码:
我在这里遵循一个简单的教程: http://addyosmani.github.io/backbone-fundamentals/ 我有一个节点.js服务器在本地主机端口 4711 上运行 我让tomcat在端口8082上运行,并让backbone.js应用程序作为客户端在该服务器上以index.html身份启动。 但我明白了: XMLHttpRequest 无法加载 ...api/books.本