gpt4 book ai didi

IIS:发布到默认页面时出现 405(方法不允许)

转载 作者:行者123 更新时间:2023-12-02 00:39:38 26 4
gpt4 key购买 nike

我想POST表单数据到网络服务器的默认页面,例如:

POST http://errorreporting.example.com/ HTTP/1.1

我希望服务器负责 302 将客户端重定向到 POST 应该去的地方。服务器上的 default.asp 文件执行此任务 ( which is the technique Microsoft recommends ),方法是执行 Redirect:

默认.asp:

<%
Response.Redirect "SubmitError.ashx"
%>

当我只是浏览服务器时:

GET http://errorreporting.example.com/ HTTP/1.1

我从服务器得到了预期的响应:

HTTP/1.1 302 Object moved
Server: Microsoft-IIS/5.0
Location: SubmitError.ashx
...

但是当我 POST 到服务器时:

POST http://errorreporting.example.com/ HTTP/1.1

服务器对我很生气:

HTTP/1.1 405 Method not allowed
Connection: close
Allow: OPTIONS, TRACE, GET, HEAD
...

我希望服务器能够将客户端重定向到适当的提交URL,而不是使用网址。当然,这是因为 URL 可以(即已经)更改:

  • http://errorreporting.example.com/SubmitError.asp
  • http://errorreporting.example.com/SubmitError.aspx
  • http://errorreporting.example.com/SubmitError.ashx
  • http://errorreporting.example.com/ErrorReporting/Submit.ashx
  • http://errorreporting.example.com/submiterror.php
  • http://errorreporting.example.com/submit/submiterror.ashx

等等

注意:如果我更改 URL 以包含文档位置:

/* SErrorReportingUrl = 'http://www.example.com:8088/ErrorReporting/SubmitError.ashx';
SErrorReportingUrl = 'http://www.example.com/ErrorReporting/SubmitError.ashx';
SErrorReportingUrl = 'http://errorreporting.example.com:8088/ErrorReporting/SubmitError.ashx';
SErrorReportingUrl = 'http://errorreporting.example.com/SubmitError.ashx';
SErrorReportingUrl = 'http://errorreporting.example.com';
SErrorReportingUrl = 'http://errorreporting.example.com/SubmitError.ashx';
*/
SErrorReportingUrl = 'http://errorreporting.example.com/submit/SubmitError.ashx';

它工作正常:

HTTP/1.1 200 OK

最佳答案

事实证明让 IIS 支持 POST 并没有真正帮助。

我正在使用 XMLHttpRequest 来执行 POST。几乎所有的 XMLHttpRequest 实现(例如 Chrome、Internet Explorer、MSXML)都有一个错误,它执行的是 GET,而不是 POST,在重定向之后。

W3C's XMLHttpReqest specification说应该遵循重定向并重新发出请求:

If the response is an HTTP redirect:

If the redirect does not violate security (it is same origin for instance), infinite loop precautions, and the scheme is supported, transparently follow the redirect while observing the same-origin request event rules.

Note: HTTP places requirements on the user agent regarding the preservation of the request method and request entity body during redirects, and also requires end users to be notified of certain kinds of automatic redirections.

here's a site您可以在其中测试浏览器的 XmlHttpRequest 实现中的错误。


最后,我将解决一个 IIS 错误和一个 XMLHttpRequest 错误,方法是让我的“默认”页面执行 302 redirect 会,但会返回 200 OK:

HTTP/1.1200 OK
Connection: close
Date: Sun, 27 Jun 2010 13:28:14 GMT
Server: Microsoft-IIS/6.0
Location: http://errorreporting.example.com/submit/SubmitError.ashx
Content-Length: 92
Content-Type: text/html
Cache-control: private

<HTML><BODY>This content has moved <A href="submit/SubmitError.ashx">here.</A></BODY></HTML>

无论如何我都在强制客户进行两次点击 - 还不如让它正常工作。

关于IIS:发布到默认页面时出现 405(方法不允许),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3120071/

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