我正在开发一个页面,通过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不允许使用null.
如果我直接从浏览器查询该URL,它可以正常工作.发生了什么,我可以解决这个问题吗?我是不是错误地编写了我的查询,或者这是因为Panoramio会妨碍我正在尝试做的事情?
Google没有在错误消息上显示任何有用的匹配项.
编辑
以下是一些显示问题的示例代码:
$().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);
});
});
Run Code Online (Sandbox Code Playgroud)
您可以在线运行该示例.
编辑2
感谢Darin对此的帮助. 上面的代码错了. 请改用:
$().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...
});
});
Run Code Online (Sandbox Code Playgroud) 我从设备获取图像并使用 Pixi JS 绘制带有过滤器的画布。使用计算机获取图像效果很好。但是当我在 IOS 上时,它会抛出错误,例如跨源问题,或者我正在尝试使用未知格式。
这是我用来绘制图像的代码(适用于网络/桌面,但不适用于cordova构建的ios应用程序)
_renderImage() {
let wWidth;
if (window.outerWidth > 414) {
wWidth = 414;
} else {
wWidth = window.outerWidth;
}
const img = new Image();
img.src = this.state.avatarSource;
let lower;
if (img.width > img.height) {
lower = img.height;
} else {
lower = img.width;
}
const canvas = this.refs.canvasimg;
if (canvas.hasChildNodes()) {
canvas.removeChild(canvas.childNodes[0]);
}
const renderer = PIXI.autoDetectRenderer(wWidth, wWidth * 1.25, {transparent: true});
const stage = new PIXI.Container();
canvas.appendChild(renderer.view);
// create a PIXI sprite …
Run Code Online (Sandbox Code Playgroud) 我正在尝试网络服务器和客户端..(混合应用程序!使用cordova)但Access-Control-Allow-Origin错误..所以我下载了chrome扩展程序cors ..但是没有工作..
[server.js]
var app = require('express')();
var http = require('http').Server(app);
var cors = require('cors');
var io = require('socket.io')(http);
// io.set('origins','*:*');
io.on('connection', function(socket){
console.log('a user connected');
socket.on('weather_location', function(msg){
socket.emit('message', msg);
})
});
http.listen(80, function(){
console.log('listening on *:3737');
});
Run Code Online (Sandbox Code Playgroud)
[index.html的]
<!DOCTYPE html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta http-equiv="Access-Control-Allow-Origin" content="*">
<html>
<head>
<title>location_weather</title>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<!-- <script type='text/javascript' src='/socket.io/socket.io.js'></script> -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.1.0/socket.io.slim.js"/>
<!-- <script type="text/javascript" src="./js/socket.io.js"/> -->
<script type="text/javascript" src="https://openapi.map.naver.com/openapi/v3/maps.js?clientId=irru1vaga0dOPnfgy29o&submodules=geocoder"></script>
<!-- <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: …
Run Code Online (Sandbox Code Playgroud)