所以我想把一个网站放在ipfs上,但是它有一些javascript可以调用一个不是ipfs网关的服务器,所以我得到了交叉来源的错误.知道怎么做吗?
我正在从 X-Frame-Options 迁移到内容安全策略以修复点击劫持漏洞。我的应用程序曾经SAMEORIGIN在 hteX-Frame-Options标头中设置策略。中的等效选项是Content-Security-Policy什么?
我正在从我的客户端向 google oauth 2 API'https://accounts.google.com/o/oauth2/auth?redirect_uri=http://blah.com&response_type=token&client_id....'进行ajax 调用以获取访问令牌,但出现以下错误:
对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问来源 ' http://blah-blah.com '
我希望调用是 ajax,以便在调用时不会打扰用户,url或者window.location.href换句话说,我如何获取访问令牌以使整个页面不加载,并且是否可以解决上述问题错误???
根据我的理解,使用CORS模块将从Access-Control-Allow-Origin资源中删除标头,导致XmlHttp请求从浏览器失败.
但是,这是否会阻止来自CURL或其他本机应用程序/ Web服务器的Http请求(即通过PHP编写并运行的请求)成功从该资源检索数据?
我正在尝试编写一个拦截器,以使用Angular向所有HTTP请求添加令牌。我大致使用这里给出的食谱-https: //thinkster.io/interceptors
因此代码使用http模块工厂和一个tokenInterceptor()函数。我可以成功地将令牌添加为请求的标头-但是现在,当令牌通过拦截器时,它会被某种CORS阻止机制阻止。我在Chrome控制台中收到此错误-
XMLHttpRequest无法加载http://127.0.0.1:/。对预检请求的响应未通过访问控制检查:请求的资源上不存在“ Access-Control-Allow-Origin”标头。因此,不允许访问源“ http://127.0.0.1:/ ”。响应的HTTP状态码为403。
我尝试将拦截器如下所示的访问控制允许源标头设置为无效:
config.headers['Access-Control-Allow-Origin'] = '*';
Run Code Online (Sandbox Code Playgroud)
我在网上尝试了一些建议,但没有帮助。要解决与CORS相关的问题,客户端是否需要做任何事情-还是服务器方面的问题?
我正在尝试修复具有 onblur 事件侦听器的代码,该事件侦听器执行 setSelectionRange。我注意到,在 Chrome 上使用此功能时,模糊事件会将光标移动到下一个选项卡索引。然而,在 safari 上,光标保留在同一元素上,并且光标移动到 setSelectionRange 中指定的位置。
问题:
下面是一段 hello world 代码,显示了当我在 Safari 和 Chrome 中按 Tab 键移出某个字段时,光标的行为有何不同:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
<script>
function handleBlur() {
event.target.setSelectionRange(1,1)
};
</script>
</head>
<body>
<input value="First Name" onblur="handleBlur()">
<input value="Last Name" onblur="handleBlur()">
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我启用了内容安全策略meteor包meteor/browser-policy-common
现在我从ostrio收到这个错误:与CSP相关的文件
拒绝从'blob:http:// localhost:3000/ef628f55-736b-4b36-a32d-b1056adfaa8c ' 创建一个worker,因为它违反了以下内容安全策略指令:"default- src'self'http :// fonts. googleapis.com https://fonts.googleapis.com http://fonts.gstatic.com https://fonts.gstatic.com http://code.ionicframework.com https://code.ionicframework.com ".请注意,'worker-src'未明确设置,因此'default-src'用作后备.
我的实际browser-policy-common配置看起来像这样
import { BrowserPolicy } from 'meteor/browser-policy-common';
// e.g., BrowserPolicy.content.allowOriginForAll( 's3.amazonaws.com' );
// BrowserPolicy.content.allowFontOrigin("data:");
BrowserPolicy.framing.disallow();
BrowserPolicy.content.disallowInlineScripts();
BrowserPolicy.content.disallowEval();
BrowserPolicy.content.allowInlineStyles();
BrowserPolicy.content.allowFontDataUrl();
const trusted = [
'fonts.googleapis.com',
'fonts.gstatic.com',
'code.ionicframework.com',
];
_.each(trusted, (origin) => {
BrowserPolicy.content.allowOriginForAll(origin);
});
Run Code Online (Sandbox Code Playgroud)
你能告诉我应该更改哪个配置以允许ostrio:文件blob:http:// localhost:3000 / ...工作?
非常感谢!
有谁遇到过Google Chrome和SRI Hash这个问题,它在控制台窗口中不断抛出相同的错误:
无法找到在“诚信”属性的有效消化资源“ https://fonts.googleapis.com/css?family=Indie+Flower ”与计算SHA-256诚信“yxJPuU / cJi0 / 8FoS + agssT / MtC4P3SGuU + JOzbTejqQ ='。资源已被阻止。
我正在从https://report-uri.io/home/sri_hash生成代码,并且还尝试过https://www.srihash.org/
根据这个网站https://glebbahmutov.com/blog/subresource-integrity/,作者有同样的问题,因此添加了多个散列<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Indie+Flower" integrity="sha256-CoGIUDlbZltnYk6u/wQKXOszdOOWImA1XzSERnNzHlc= sha384-vk+perBz0d5g0G+x7+4BxElvHeiaLNX7jegOI63Bg53TxNYaUzLGEsSQ4AmIwVr4 sha512-h+9Z3+9s3jtPJjXU9phAXFQwYYFSYhXlnkPwkuubLFf5kfeXWIRC32YkRdB08xmut/dJG/RjPoiR/r4DAtm3PQ==" crossorigin="anonymous">
我正在学习Ramda并试图达到无点编程.为了做到这一点,我尝试在这里和那里进行重构但是却坚持这一点.
我显然认为这不起作用,因为调用是异步的,但我找不到这个代码有什么问题.
// Why is this
const toJSONRamda = R.pipe(
R.prop('json'), // getting the 'json' function
R.call // and calling it
)
// different from this
const toJSON = response => response.json()
// Works
fetch('https://jsonplaceholder.typicode.com/todos/1')
.then(toJSON)
.then(console.log)
// Does not Work
fetch('https://jsonplaceholder.typicode.com/todos/1')
.then(toJSONRamda)
.then(console.log)Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>Run Code Online (Sandbox Code Playgroud)
javascript functional-programming promise ramda.js fetch-api
简而言之,当使用带有 fetch api 的授权标头并遵循重定向时,Chrome、FireFox 和 Opera(在 Mac 上)在第二个请求中包含授权标头。但是,Safari (12.0.1) 没有。从fetch api 规范和问题 #553我的理解是应该包含标题。这是对 fetch 应该如何工作的正确理解吗?
这是我用于 Safari 的解决方法的简化代码,但我想知道是否我做错了什么导致了 Safari 的行为,或者是否有更好的解决方法。
export async function loadData(token) {
const opts = {headers: {Authorization: `Bearer ${token}`}, credentials: 'include', redirect: 'follow'};
let response = await fetch('/api/data', opts);
// Work around for Safari not including headers in redirected request
if (response.status === 401 && response.redirected) {
response = await fetch(response.url, opts);
}
if (response.ok) {
return response.json();
}
return null; …Run Code Online (Sandbox Code Playgroud) cors ×4
javascript ×4
fetch-api ×2
safari ×2
ajax ×1
angularjs ×1
asp.net-core ×1
cross-domain ×1
google-api ×1
hash ×1
html-input ×1
http-headers ×1
interceptor ×1
ipfs ×1
meteor ×1
oauth ×1
oauth-2.0 ×1
promise ×1
ramda.js ×1
reactjs ×1
redirect ×1
webkit ×1