我在使用play 2.4.x设置CORS时遇到了一些问题。我正在使用播放来存储和检索图像文件。当我访问图片时,http://localhost:9000/assets/images/favicon.png'在使用javascript的普通本机test.html文件中,它会抛出CORS安全错误。
我做了以下事情: 在游戏中 - 我添加了 Application.conf 文件
play.filters.cors {
allowedOrigins = null
allowedHttpMethods = ["GET", "POST"]
allowedHttpHeaders = ["Accept"]
preflightMaxAge = 3 days
}
在 Filter.java 文件中(在根目录中)
import play.api.mvc.EssentialFilter;
import play.filters.cors.CORSFilter;
import play.http.HttpFilters;
import javax.inject.Inject;
public class Filters implements HttpFilters {
@Inject
CORSFilter corsFilter;
public EssentialFilter[] filters() {
return new EssentialFilter[] { corsFilter };
}
}
在 build.sbt 文件
中libraryDependencies ++= Seq(
javaJdbc,
cache,
javaWs,
filters
)
我在html文件中的javascript代码,我试图将图片加载到画布上:
$("#test").recScribble.loadImage('http://localhost:9000/assets/images/favicon.png');
我的recScribble插件有一个loadImage函数,如下所示,画布上下文为ctx
$.fn.recScribble.loadImage=function(imgSrc){ //to Load image on to the canvas; give the link as parameter
var imageObj = new Image();
imageObj.setAttribute('crossOrigin', 'anonymous');
imageObj.src =imgSrc;
imageObj.onload = function() {
canvas.width=imageObj.naturalWidth;
canvas.height=imageObj.naturalHeight;
ctx.drawImage(imageObj, 0, 0);
};
return this;
};
HTML返回CORS安全性错误以及以下信息
常规
Request URL:http://localhost:9000/assets/images/favicon.png
Request Method:GET
Status Code:403 Forbidden
Remote Address:[::1]:9000
响应标题
Content-Length:0
Date:Sat, 12 Dec 2015 02:35:47 GMT
请求标题
Accept:image/webp,image/*,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Host:localhost:9000
Origin:null
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36
当我从正确启用CORS的其他服务器(在Internet上)访问图像时,使用相同的HTML文件加载图像正在工作。所以我猜,javascript没有问题(但不确定)。
我是新手,并且不知道要在这里更改哪个设置。 PLS。帮助!