Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 区分大小写的URL触发CORS错误_Javascript_Python_Json_Url_Cors - Fatal编程技术网

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,不响应回调(它发送
{…}