我想用一个用户脚本加载一个共享工作者.问题是用户脚本是免费的,并且没有托管文件的商业模式 - 我也不想使用服务器,甚至是免费服务器来托管一个小文件.无论如何,我尝试了它,我(当然)得到了相同的原始政策错误:
Run Code Online (Sandbox Code Playgroud)Uncaught SecurityError: Failed to construct 'SharedWorker': Script at 'https://cdn.rawgit.com/viziionary/Nacho-Bot/master/webworker.js' cannot be accessed from origin 'http://stackoverflow.com'.
还有另一种方法可以通过将worker函数转换为字符串然后转换为Blob并将其作为worker加载来加载Web worker,但我也尝试过:
var sharedWorkers = {};
var startSharedWorker = function(workerFunc){
var funcString = workerFunc.toString();
var index = funcString.indexOf('{');
var funcStringClean = funcString.substring(index + 1, funcString.length - 1);
var blob = new Blob([funcStringClean], { type: "text/javascript" });
sharedWorkers.google = new SharedWorker(window.URL.createObjectURL(blob));
sharedWorkers.google.port.start();
};
Run Code Online (Sandbox Code Playgroud)
这也不起作用.为什么?因为共享工作程序是根据其工作文件的加载位置共享的.由于createObjectURL
为每次使用生成唯一的文件名,因此工作人员将永远不会拥有相同的URL,因此永远不会共享.
我怎么解决这个问题?
注:我想询问具体的解决方案,但在这一点上,我想我能做的最好是问一个更宽泛的方式的任何 解决问题的办法,因为我所有的尝试的解决方案似乎根本不可能的,因为相同的起源政策或方式
URL.createObjectURL
工作(从规范,似乎不可能改变生成的文件URL).话虽如此,如果我的问题可以某种方式得到改善或澄清,请发表评论.
我有一个类似的问题,如果不是这个线程中的问题相同: 只在谷歌Chrome和URL重写中随机丢失会话变量
但是该线程中的所有解决方案对我都不起作用.我在我的PHP/MySQL应用程序中只从Google Chrome中获得了一个奇怪的行为.如果我尝试使用Firefox,它可以运行,但Chrome不会.
我导航到购物车中的某个地方,代码中的几个地方我将存储会话数据.不要担心我开始会议或与此相关的任何事情,我已经在webapp开发工作了11年,一切都很好.
在所有浏览器中,我都可以var_dump($_SESSION)
恢复我的数据,但在Chrome中,它不会保留数据.另请注意,会话确实已经传递,我可以查看网络监视器,我看到正在发送的cookie以及与会话工作相关的许多其他事情但是$_SESSION['last_viewed_element']
没有保留.我似乎也无法设置任何其他东西,所有人都迷失了.
编辑:
从SESSIONS切换到COOKIES解决了问题...
我正在开发一个WebGL驱动的应用程序,我想从命令行启动这样的chrome:
open -a Google\ Chrome --args --disable-web-security
Run Code Online (Sandbox Code Playgroud)
我只是不想每次都输入它.有没有办法轻松将其转换为单字命令?如果重要,我正在使用mac.
我正在尝试制作一个带有 flutter 的 RSS 阅读器,但该程序引发了XMLHttpRequest error
.
在我的测试中,我使用网络(Chrome)作为我的目标平台。
\n感谢您的帮助。
\n Future<RssFeed> fetchFeed() async {\ntry {\n final response = await http.get(Uri.parse(url), headers: {"Access-Control-Allow-Origin": "*"});\n return RssFeed.parse(response.body);\n} catch (e) {\n print(e);\n return RssFeed(title: "Test");\n }}\n\n var feed = await fetchFeed();\n
Run Code Online (Sandbox Code Playgroud)\n完整错误日志:
\nError: XMLHttpRequest error.\nC:/b/s/w/ir/cache/builder/src/out/host_debug/dart-\n\nsdk/lib/_internal/js_dev_runtime/patch/core_patch.dart 910:28 get current\npackages/http/src/browser_client.dart 69:22 <fn>\nC:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/zone.dart 1685:54 runUnary\nC:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 159:18 handleValue\nC:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 766:44 handleValueCallback\nC:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 795:13 _propagateToListeners\nC:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 592:7 [_complete]\nC:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/stream_pipe.dart 61:11 _cancelAndValue\nC:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/stream.dart 1288:7 <fn>\nC:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 334:14 _checkAndCall\nC:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 339:39 dcall\nC:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/html/dart2js/html_dart2js.dart 37301:58 <fn>\n\n\n at Object.createErrorWithStack (http://localhost:49656/dart_sdk.js:5080:12)\n at Function._throw (http://localhost:49656/dart_sdk.js:20337:18)\n at Function.throwWithStackTrace …
Run Code Online (Sandbox Code Playgroud) 我在PhoneGap中遇到了ngView的问题.
一切似乎都装得很好,我甚至可以使用ng-controller来使用基本的控制器.但是当我尝试使用ngView进行路由时,没有任何反应.
的index.html
<!doctype html>
<html ng-app>
<head>
<script type="text/javascript" src="lib/cordova-2.4.0.js"></script>
<script type="text/javascript" src="lib/angular-1.0.4.min.js"></script>
<script type="text/javascript" src="js/app.js"></script>
</head>
<body>
<a href="#/test">Test</a>
<div ng-view></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
app.js
angular.module('App', []).config(function ($routeProvider) {
$routeProvider.when('/test', {
controller: TestCtrl,
template: '<h1> {{ test }} </h1>'
});
});
function TestCtrl($scope) {
$scope.test = "Works!";
}
Run Code Online (Sandbox Code Playgroud)
Eclipse记录器onMessage(onPageFinished, fle:///android_asset/www/index.html#/test)
每次单击链接时都会显示,并且在没有#
引发错误的情况下尝试它而无法找到路径.
从我在其他地方做好准备,这应该是有效的.任何帮助将不胜感激.
当我尝试访问外部域上托管的一些CSS文件时,我在Firebug中收到此错误:
Security error" code: "1000
rules = styleSheets[i].cssRules;
Run Code Online (Sandbox Code Playgroud)
我使用的代码是:
$(document).ready(function () {
$("p").live('mousedown', function getCSSRules(element) {
element = $(this);
var styleSheets = document.styleSheets;
var matchedRules = [],
rules, rule;
for (var i = 0; i < styleSheets.length; i++) {
rules = styleSheets[i].cssRules;
for (var j = 0; j < rules.length; j++) {
rule = rules[j];
if (element.is(rule.selectorText)) {
matchedRules.push(rule.selectorText);
}
}
}
alert(matchedRules);
});
});
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个问题,除了移动同一域上的所有CSS文件?
我的意思是,我已经读过Angular允许使用模拟数据,因此不需要连接RESTFul api.我可以想到一个用例,用户体验设计师只需看看化妆品,就不需要连接到Web服务器.我也可以考虑其他用例.
因此,Angular的工作是给浏览器一个本地文件的URL,如C:\ temp\index.html,js文件位于c:\ temp或者说c:\ temp\js.
所以实际上,我试过了,这里是一个应用程序文件(我知道应该分开)
<html ng-app="myNoteApp">
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<body>
<div ng-controller="myNoteCtrl">
<h2>My Note</h2>
<p><textarea ng-model="message" cols="40" rows="10"></textarea></p>
<p>
<button ng-click="save()">Save</button>
<button ng-click="clear()">Clear</button>
</p>
<p>Number of characters left: <span ng-bind="left()"></span></p>
</div>
<script >
// was in separate file but pasted in for demo purposes
var app = angular.module("myNoteApp", []);
</script>
<script >
// was in separate file but pasted in for demo purposes
app.controller("myNoteCtrl", function($scope) {
$scope.message = "";
$scope.left = function() {return 100 - $scope.message.length;};
$scope.clear = …
Run Code Online (Sandbox Code Playgroud) 我使用React和Express遇到了同构JavaScript应用程序的问题.
我正在尝试使用axios.get在我的组件安装时发出HTTP请求
componentDidMount() {
const url = 'http://ufc-data-api.ufc.com/api/v3/iphone/fighters/title_holders';
axios.get(url).then( res => {
//use res to update current state
})
}
Run Code Online (Sandbox Code Playgroud)
我从API获得状态200 res,但我没有得到任何响应数据并在我的控制台中收到错误
XMLHttpRequest cannot load http://ufc-data-api.ufc.com/api/v3/iphone/fighters/title_holders.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost:3000' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)
但是,如果我在server.js中发出请求
const url = 'http://ufc-data-api.ufc.com/api/v3/iphone/fighters/title_holders';
axios.get(url).then(res => {
//console.log(res);
});
Run Code Online (Sandbox Code Playgroud)
它工作正常,我在服务器启动时获得响应数据.这是实际API的问题还是我做错了什么?如果这是一个CORS问题,我猜测server.js中的请求也不起作用?谢谢!
使用谷歌浏览器,我似乎在页面之间导航时丢失/损坏会话数据(PHP 5.0.4,Apache 2.0.54).该网站在IE7/8,Firefox,Safari和Opera中运行良好.该问题仅适用于Google Chrome.
我缩小了问题范围.我正在使用搜索友好的URL,并通过.htaccess文件隐藏我的前端控制器(index.php).所以URL看起来像:www.domain.com/blah/blah/这是.htaccess文件内容:
Options +FollowSymlinks
RewriteEngine on
#allow cool urls
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php [L]
#allow to have Url without index.php
Run Code Online (Sandbox Code Playgroud)
如果我删除.htaccess文件,并在网址中公开前端控制器:www.domain.com/index.php/blah/blah/,Chrome就可以正常工作.
有什么想法吗?我认为Chrome识别使用哪种cookie并发送到服务器有什么问题?这发生在Chrome 4和5中.谢谢!