Javascript 区分大小写的URL触发CORS错误
我正在尝试以Javascript 区分大小写的URL触发CORS错误,javascript,python,json,url,cors,Javascript,Python,Json,Url,Cors,我正在尝试以http://pypi.python.org/pypi//json使用JavaScript 我的代码如下所示: var name = $('#name').val(); var url = 'http://pypi.python.org/pypi/' + name + '/json'; $.getJSON(url, function(result){ console.log(result); }); 问题是json的url区分大小写,因此,例如,pypi.python.org
http://pypi.python.org/pypi//json
使用JavaScript
我的代码如下所示:
var name = $('#name').val();
var url = 'http://pypi.python.org/pypi/' + name + '/json';
$.getJSON(url, function(result){
console.log(result);
});
问题是json的url区分大小写,因此,例如,pypi.python.org/pypi/flask/json会被重定向到pypi.python.org/pypi/flask/json,因为包“flask”需要大写字母F
因此,如果name
是flask,则会出现XMLHttpRequest无法加载的错误https://pypi.python.org/pypi/flask/json. 重定向自'https://pypi.python.org/pypi/flask/json“到”https://pypi.python.org/pypi/Flask/json'已被CORS策略阻止:请求的资源上不存在'Access Control Allow Origin'标头。因此,不允许访问源站“null”。
关于如何正确访问json(即使包名的大小写错误)有什么想法吗?如果您通过开放的CORS代理发出请求,它应该可以工作;尝试将代码更改为:
var url = 'https://cors-anywhere.herokuapp.com/http://pypi.python.org/pypi/'
+ name + '/json';
它通过一个开放的CORS代理发送请求,该代理将Access Control Allow Origin
响应头添加到请求中,然后将其作为响应传递回请求的前端代码
浏览器看到的是带有访问控制允许原点响应头的重定向响应,因此浏览器实际上将遵循重定向而不是停止
所有的,看起来PyPI.Python .Org站点都应该包含Access控件允许他们的3XX重定向响应中的原点< /代码>响应头,因此您可以考虑在请求它们时提交一个bug。
似乎是PyPI在重定向时没有正确设置头的问题。JSONP也不起作用,因为https://pypi.python.org/pypi/Flask/json?callback=f
按预期工作(f({…})
),但https://pypi.python.org/pypi/flask/json?callback=f
重定向到大写字母F,不响应回调(它发送{…}
)