我正在编写一个脚本,该脚本使用XMLHttpRequest来搜索由相对路径定义的文件,尝试解析该脚本可识别的其他相同域绝对路径的相对路径,然后尝试从已解析的文件中加载该文件网址.如果我遇到404,我只是尝试将文件相对路径解析为另一个绝对路径,然后再试一次.对于这个特殊的脚本,它完全可以遇到404-然而,我的控制台上到处都是"无法加载资源:服务器响应状态为404(未找到)消息,我想要抑制它们.
据我所知,没有错误可以捕获 - 错误情况由xmlHttpRequest.onreadystatechange处理程序处理,并且没有window.onerror.
有没有办法压制这些消息?
谢谢
javascript google-chrome xmlhttprequest google-chrome-devtools
我想看看标题是text/html还是text/xml.如果它是text/html那么就出现了错误,我宁愿在继续之前抓住它.
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://static.reddit.com/reddit.com.header.png', true);
xhr.responseType = 'arraybuffer';
xhr.onload = function(e) {
if (this.status == 200) {
var uInt8Array = new Uint8Array(this.response);
var byte3 = uInt8Array[4];
var bb = new WebKitBlobBuilder();
bb.append(xhr.response);
var blob = bb.getBlob('image/png');
var base64 = window.btoa(blob);
alert(base64);
}
};
xhr.send();
Run Code Online (Sandbox Code Playgroud)
基本上,我在这里尝试做的是检索图像,并将其转换为base64.
通过阅读这里的评论,它说"当然.在将资源作为ArrayBuffer获取后,从中创建一个blob.一旦你有了,你可以直接对文件/ blob进行base64编码(window.btoa())或FileReader. readAsDataURL()".
然而,window.btoa()只是[对象blob],而我需要从图像中获取二进制文件,以便我可以将其转换为base64并使用数据将其显示在img标记中:
谁知道如何实现这一目标?
先感谢您!
XMLHttpRequests要求CORS跨域工作.类似于Web字体,WebGL纹理和其他一些东西.通常,所有新API似乎都有此限制.
为什么?
它很容易规避:所需要的只是一个简单的服务器端代理.换句话说,不禁止服务器端代码执行跨域请求; 为什么是客户端代码?这对任何人都有什么安全保障?
它是如此不一致:我不能XMLHttpRequest,但我可以<script src>或<link rel>或<img src>或<iframe>.什么限制XHR等甚至完成?
我正在尝试将以下Angular 1代码转换为Angular 2:
$http.jsonp('https://accounts.google.com/logout');
Run Code Online (Sandbox Code Playgroud)
它必须是JSONP请求才能跳过CORS策略问题.
基本上这就是问题,如何在javascript中动态地从HTML字符串构造一个Document对象?
我想知道为什么不能使用setRequestHeader 设置cookie头.是否有任何特定原因或只是它们是由浏览器本身添加的,所以这些标题被禁用了?有安全问题吗?
- 编辑
我正在使用node.js并使用该xmlhttprequest模块.以下是测试代码:
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.withCredentials = true;
xhr.setRequestHeader('Cookie', "key=value");
xhr.send(null);
Run Code Online (Sandbox Code Playgroud)
这里我需要设置cookie-header,因为node.js' xmlhttprequest没有显式添加cookie-header(就像浏览器一样).尝试这样做时,xmlhttprequest给出错误" Refused to set unsafe header".
虽然我找到了一个补丁并成功发送了cookie标题.但是想知道为什么禁用它来设置cookie-header?无论我在哪里阅读,发现它是数据完整性和安全性所必需的,但在这种情况下可以违反什么安全性,在哪里都没有提到.我想评估这个数据完整性问题是否对node.js应用程序有效,如果我使用我的补丁.
如您所知,Web浏览器的安全性不允许发出跨域请求.我读了一本书,说只有在你可以将文件放在服务器上时才应该使用XMLHTTPRequest(意味着你要加载到同一个请求域的页面).如果你不能 - 你应该寻找替代方案.
我的问题是:
编辑: 我还不清楚......
例如,我从www.domain1.com拉取我的页面,我需要从www.domain2.com请求javascript .因此,拉出的页面应包含以下内容:
<script src="www.domain2.com/script.js"></script>
Run Code Online (Sandbox Code Playgroud)
避免跨域限制.
我可以使用JSONP,请求看起来像:http://ww.domain1.com/?callback = someFunction.js
但是:是不是一样?我只是从另一个域中拉js!它是否避免跨域限制?
我正在尝试调试一个不是我编写的Web应用程序.发生了一个失败的XMLHttpRequest:
XMLHttpRequest cannot load ... No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '...' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)
有没有办法,最好使用Chrome开发者工具,找到这个电话的来源?
我正在使用chrome扩展,它使用GET方法发送HTTP请求.
如何使用值发送www.example.com参数?par0
www.example.com?par=0
Run Code Online (Sandbox Code Playgroud)
(服务器读取参数par并做一些事情)
我找到了这篇文章,谈论了Cross-Origin XMLHttpRequest.但我不知道他们的例子如何帮助我.
javascript google-chrome get xmlhttprequest google-chrome-extension
xmlhttprequest ×10
javascript ×8
cross-domain ×2
ajax ×1
angular ×1
asynchronous ×1
blob ×1
content-type ×1
cookies ×1
cors ×1
debugging ×1
document ×1
dom ×1
get ×1
html ×1
http ×1
jquery ×1
jsonp ×1
node.js ×1
security ×1
typescript ×1
webkit ×1
websocket ×1