所以我一直在尝试使用JavaScript为客户端实现CORS。我遇到了一个奇怪的问题,我根本不明白。请保留我私密的服务器名称,请原谅我。
因此,如果我将代码作为脚本运行到浏览器中并观察控制台(在firefox和chrome上测试),它就能工作。但是,一旦我将代码合并到用户驱动的按钮中,它就不会发出请求。在firefox中,我可以看到连接不安全,因此它不会发送它。
所以这里只是使用javascript代码的例子:
for(int i=0; i<fileslist.length; i++){
String file_name = fileslist[i].getName()
String file_timestamp = fileslist[i].getTimestamp().getTime()
return '|' + file_name+ '|' + '/' +file_name+'|' + '{' +file_timestamp+ '}' + '\n'
}
ftpClient.disconnect()
}
这是使用javascript按钮的示例
<script language="javascript">
var request = new XMLHttpRequest();
request.open('POST', 'https://api.somewhere.com');
request.setRequestHeader('Content-Type', 'application/json');
request.setRequestHeader('Authorization', 'Basic 123456ABCDE');
request.setRequestHeader('Access-Control-Allow-Origin', 'https://api.somewhere.com');
request.onreadystatechange = function () {
if (this.readyState === 4) {
console.log('Status:', this.status);
console.log('Headers:', this.getAllResponseHeaders());
console.log('Body:', this.responseText);
}
};
var body = {
'testBody': "somedata"
};
request.send(JSON.stringify(body));
</script>
答案 0 :(得分:1)
'Access-Control-Allow-Origin'不是请求标头,而是响应标头。 如果原点未更改或删除此标题,则无法执行任何操作。
也许其余的代码都没问题,请查看Chrome浏览器的日志,例如,如果存在授权问题,它会显示“警告标记”。
答案 1 :(得分:0)
在firefox中,我可以看到连接不安全,因此无法发送。
如果由于您正在混合HTTP和HTTPS而拒绝发送请求,那么您无法使用CORS修复此问题。您需要匹配您的安全级别。
旁白:
从HTML页面发起CORS请求
客户端上的CORS几乎完全由浏览器透明处理。您没有做任何特殊的事情来发送CORS请求。
request.setRequestHeader('Access-Control-Allow-Origin', 'https://api.somewhere.com');
这是一个响应标头,而不是请求标头,它在请求中没有位置。