Ajax请求:拒绝设置不安全的标头
Ajax request: Refused to set unsafe header
我正在尝试使用谷歌文本到语音播放音频。因此,我需要在正确设置Referer
和User-Agent
的情况下向他们的端点发布请求。这个调用应该返回一个我可以播放的MP3。
然而,我得到Refused to set unsafe header
错误。这是我的代码。我该怎么做呢?
$.ajax({
url: 'http://translate.google.com/translate_tts?ie=UTF-8&q=Hello&tl=en&client=t',
beforeSend: function(xhr) {
xhr.setRequestHeader("Referer", "http://translate.google.com/");
xhr.setRequestHeader("User-Agent", "stagefright/1.2 (Linux;Android 5.0)");
}, success: function(data){
el.mp3 = new Audio(data);
el.mp3.play();
}
});
你不能。
规范要求浏览器中止setRequestHeader
方法,如果你试图设置Referer
头(它曾经是,User-Agent
也被禁止,但已经改变)..
如果你需要手动设置Referer
,那么你需要从你的服务器发出请求,而不是访问者的浏览器。
(也就是说,如果你需要欺骗用户代理或推荐人,那么你可能试图以一种它的所有者不希望的方式使用服务,所以你应该尊重并停止尝试)。
注意,当jQuery包装XHR时,同样的规则也适用于fetch。
将Origin
和Referer
的标头与<iframe>
中的GET XMLHttpRequest
清空
实际上,是可能的;至少对于普通网页来说是这样。诀窍在于注入一个XMLHttpRequest
函数转换为空的<iframe>
。一个空的<iframe>
的起源恰好是about://blank
,这导致空的Origin
和Referer
HTTP头。
<iframe id="iframe"></iframe>
JavaScript: const iframe = document.getElementById('iframe');
const iframeWin = iframe.contentWindow || iframe;
const iframeDoc = iframe.contentDocument || iframeWin.document;
let script = iframeDoc.createElement('SCRIPT');
script.append(`function sendWithoutOrigin(url) {
var request = new XMLHttpRequest();
request.open('GET', url);
request.onreadystatechange = function() {
if(request.readyState === XMLHttpRequest.DONE) {
if(request.status === 200) {
console.log('GET succeeded.');
}
else {
console.warn('GET failed.');
}
}
}
request.send();
}`);
iframeDoc.documentElement.appendChild(script);
JavaScript唤起:
var url = 'https://api.serivce.net/';
url += '?api_key=' + api_write_key;
url += '&field1=' + value;
iframeWin.sendWithoutOrigin(url);
在使用第三方API服务时,具有发送空Origin
和Referer
HTTP头的可能性对于保护隐私很重要。在某些情况下,原始域名可能会泄露敏感的个人信息;比如暗示某种身体状况。想想https://hypochondriasis-support.org:-D
通过检查.har
文件中的请求来测试代码,该文件保存在Vivaldi的F12 Developer View中的Network
选项卡中。
没有尝试设置User-Agent
标头。
有一些头,浏览器不允许程序员在任何javascript框架(如jQuery, Angular等)或XMLHttpRequest
中设置其值;同时发出AJAX请求。这些被称为禁止头:禁止头
- CORS保持在SecurityError上:操作不安全
- createObjectURL blob url在Firefox中不安全
- 固定位置侧边栏不滚动-设置内容的高度
- 地理定位API从Chrome 50中的不安全来源中删除
- 为什么流星会被认为是不安全的
- 打字稿显示不能设置未定义的属性,如何解决
- SecurityError:操作在canvas.toDataURL中不安全
- Mootools:拒绝设置不安全的标头“;连接”;
- 如何检测 javascript 文件是否被 IE11 安全设置阻止
- Javascript变量似乎不会设置
- Chrome for bookmarlet 中的“不安全内容”
- jQuery:Javascript抛出错误“;操作不安全”;设置值时
- 业务催化剂原型核心.ashx 拒绝设置不安全的标头“连接”冲突
- 拒绝设置不安全的标头“日期”AngularJS
- PhoneGap中的Cookie标头:拒绝设置不安全的标头“;Cookie”;
- Resharper Ajax设置不安全的标头
- Ajax请求:拒绝设置不安全的标头
- 本地机器上的Javascript -如何在不更改Internet Explorer安全设置的情况下禁用限制
- AngularJS拒绝设置不安全的header " cookie &;
- 如何处理“拒绝设置不安全标头:连接”