我有一个脚本可以检测我网站上的Javascript错误,并将它们发送到我的后端进行报告.它报告遇到的第一个错误,假设的行号和时间.
编辑包含doctype:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:fb="http://www.facebook.com/2008/fbml">
Run Code Online (Sandbox Code Playgroud)
...
<script type="text/javascript">
//<![CDATA[
// for debugging javascript!
(function(window){
window.onerror = function(msg, url, ln) {
//transform errors
if (typeof(msg) === 'object' && msg.srcElement && msg.target) {
if(msg.srcElement == '[object HTMLScriptElement]' && msg.target == '[object HTMLScriptElement]'){
msg = 'Error loading script';
}else{
msg = 'Event Error - target:' + msg.target + ' srcElement:' + msg.srcElement;
}
}
msg = msg.toString();
//ignore errors
if(msg.indexOf("Location.toString") > -1){
return; …Run Code Online (Sandbox Code Playgroud) 为了保护我的用户生成的内容免受这种潜在的"利用",我添加crossorigin="anonymous"到所有[img]BBCode.
嗯,它在IE11中工作:当我测试漏洞利用时,图像不再触发验证对话框(已禁用缓存和不同的URL进行测试以获得良好的衡量标准).
但在Chrome中,漏洞利用不起作用......因为图像根本没有被加载.相反,我得到了明显相当常见的错误:
来自"XXXXX"的图像已被跨源资源共享策略阻止加载:请求的资源上没有"Access-Control-Allow-Origin"标头.因此不允许原点'YYYYY'进入.
也许我的理解是错误的,但我认为"anonymous"属性的价值可以让它发挥作用.
我错过了什么,如果有的话还有什么其他选择可以防止这个问题?
我在响应头中设置了Cache控件Cache-Control:public, max-age=86400.但是当我尝试刷新页面或打开一个新选项卡时,它总是会打到我的服务器.我得到的响应状态是200,此请求出现了服务器日志,我也检查了chrome://cache/此请求不在列表中.我已经看过一些类似的SO问题缓存控制没有etag工作,为什么缓存控制:max-age不起作用?.但仍然没有运气.测试铬56.