Javascript 405不允许使用Tomcat的方法

Javascript 405不允许使用Tomcat的方法,javascript,tomcat,cors,http-status-code-405,Javascript,Tomcat,Cors,Http Status Code 405,我对web开发还不熟悉,有一段时间一直存在这个问题。我尝试了很多在某某和其他地方被建议的事情,但没有成功。不管怎样,我会解释我在做什么 我正在尝试一个简单的练习,我有一个简单的HTML页面,接受一个城市名称,点击提交按钮,将显示该城市的天气。HTML代码如下所示: <body> <form> <div> <label for="city">City</label>

我对web开发还不熟悉,有一段时间一直存在这个问题。我尝试了很多在某某和其他地方被建议的事情,但没有成功。不管怎样,我会解释我在做什么

我正在尝试一个简单的练习,我有一个简单的HTML页面,接受一个城市名称,点击提交按钮,将显示该城市的天气。HTML代码如下所示:

<body>
    <form>
        <div>
            <label for="city">City</label>
            <input id="city" type="text" name="city">
        </div>
        <div>
            <input id="submitButton" type="button" name="submitButton" value="Get weather!" onclick="send()">
        </div>
    </form>
    <script type="text/javascript" src="CityWeather.js"></script>
</body>

在本例中,我没有得到上述异常,但状态为1,状态为0。响应也是空的。但是,当我打开Chrome网络窗口时,我可以看到预览选项卡下有响应

尝试“POST”方法,405个错误经常与POST方法同时出现

为什么要在GET请求中添加“Content type:application/json”头?将该头添加到请求中除了触发浏览器发出CORS飞行前选项请求之外没有任何效果。从您的请求中删除该头文件。在您自己的服务器上执行什么CORS配置并不重要。见上的评论。您必须改为从后端执行请求。您正在向openweathermap.org API发出请求,该API无法正确处理CORS飞行前选项请求。如果在向该API发出请求时,向该请求添加一个“Content-Type:application/json”头,该头会触发浏览器发送CORS飞行前选项请求,而该API不会处理该请求
function send() {
    var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "http://api.openweathermap.org/data/2.5/weather?q=london&APPID=<api_key>", true);
    xhttp.setRequestHeader("Content-type", "application/json");
    xhttp.send();
    var jsonResponseText = xhttp.responseText;
    //var response = JSON.parse(jsonResponseText);
    console.log(xhttp.readyState);
    console.log(xhttp.status);
    console.log(jsonResponseText);
}
OPTIONS http://api.openweathermap.org/data/2.5/weather?q=london&APPID=<api_key> 405 (Method Not Allowed)

Failed to load http://api.openweathermap.org/data/2.5/weather?q=london&APPID=<api_key>: Response for preflight has invalid HTTP status code 405.
<filter>
  <filter-name>CorsFilter</filter-name>
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
function send() {
    var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "https://api.github.com/users/bhavyas66", true);
    xhttp.setRequestHeader("Content-type", "application/json");
    xhttp.send();
    var jsonResponseText = xhttp.responseText;
    //var response = JSON.parse(jsonResponseText);
    console.log(xhttp.readyState);
    console.log(xhttp.status);
    console.log(jsonResponseText);
}