gpt4 book ai didi

javascript - 405 方法不允许使用 Tomcat

转载 作者:行者123 更新时间:2023-11-28 23:15:06 24 4
gpt4 key购买 nike

我是网络开发的新手,遇到这个问题已有一段时间了。我尝试了很多在 SO 和其他地方建议的东西,但没有运气。不管怎样,我会解释我在做什么。

我正在尝试一个简单的练习,我有一个简单的 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>

此 HTML 文件调用我的 JS 脚本,该脚本将处理对 OpenWeatherMap API 的调用并显示结果。 JS 的代码如下(请注意,我故意省略了 api_key 但实际 URL 确实有):

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);
}

现在,当我第一次尝试通过启动 HTML 文件获取结果时,我遇到了 CORS 问题,我意识到我不应该通过文件 URL (file://) 调用 API。所以我下载了 Tomcat 9.0 并将 HTML 和 JS 文件都放在 Tomcat 的 webapps 文件夹中。然后我启动了 Tomcat 并启动了页面。但是,我得到以下提到的异常(exception)情况:

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.

我尝试使用以下条目更新 CATALINA_BASE/conf/web.xml 文件,

<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>

重新启动服务器并再次尝试,但仍然没有成功。有人可以指出需要做什么来帮助我吗?我在这个练习中使用 Chrome。我也尝试使用 IE,但没有成功。

更新 1:我尝试更改 api 调用。我没有使用 openweathermap api,而是尝试使用 GIT API 来获取我的存储库。

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);
}

在这种情况下,我没有得到上面的异常,但是state卡在了1,打印出来的status是0,响应也是空的。但是,当我打开 Chrome Network 窗口时,我可以看到 Preview 选项卡下有响应

最佳答案

试试“POST”方式,405错误经常和POST方式同时出现

关于javascript - 405 方法不允许使用 Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51129094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com