gpt4 book ai didi

asmx - 可以将 ASMX 配置为响应 HTTP 1.1 OPTIONS 请求吗?

转载 作者:行者123 更新时间:2023-12-04 16:12:35 25 4
gpt4 key购买 nike

似乎 ASMX 隐含地不允许使用 OPTIONS 动词。我发布这个问题是因为我使用带有 POST 的 jQuery AJAX 调用,它首先在发出 POST 动词**之前向服务器查询可用的选项。

默认情况下,Web.config 将所有动词映射到旧版 ASMX,如此部分配置示例所示,因此应正确路由所有内容:

<system.webServer>
<requestFiltering>
<verbs>
<add verb="OPTIONS" allowed="true"/>
<add verb="GET" allowed="true"/>
<add verb="POST" allowed="true"/>
</verbs>
</requestFiltering>

<handlers>
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

但是,对于 OPTIONS 请求,HTTP 响应始终为 405。例如,给出以下请求:
OPTIONS http://localhost:35920/MarkupTransfomer.asmx HTTP/1.1
Host: localhost:35920
Access-Control-Request-Method: POST

并总是导致:
HTTP/1.1 405 Method Not Allowed
Server: Microsoft-IIS/7.5
X-AspNet-Version: 2.0.50727

jQuery AJAX 调用如下所示,来自最近的 Encosia blog post 的推荐。使用 ASMX:
    $.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "http://localhost:35920/MarkupTransfomer.asmx",
data: "{'hi'}",
dataType: "json"
});

** 注意:我不想将客户端切换为使用 GET 而不是 POST。

Summary question:
Can I configure ASP.NET to allow ASMX to handle OPTIONS Requests inherently without error?



我考虑过的其他想法
  • 我可以想办法告诉jQuery.ajax(..)在 POST 之前不发出 OPTIONS 动词?
  • 如果我对传统 ASMX 的要求是不可能的,我考虑了另外两个潜在的想法:
  • 实现 System.Web.IHttpHandler ,将其粘贴在 web.config handlers部分仅管理 verbs=OPTIONSpath=*.asmx 的请求在默认的 ASMX 行为之外。这将是一个可行的解决方法。
  • 我可以切换到使用 WCF。但是我想先知道 ASMX 是否太笨拙。

  • 在我采取行动之前,我想向社区查询我可能忽略的事情,或者更好的选择(没有双关语)。

    更新#1

    是的,我的网络服务托管在不同的域上。显然,使用相同的原始策略导航有很多问题。这次更新绝对是值得考虑的问题的上下文信息!
    但是我想确保这个问题停留在 ASMX 服务器和 HTTP 级别。尽管我在不久的将来可能会遇到相关的浏览器问题,但这些对于解决这个问题的 HTTP 协议(protocol)级别并不重要。谢谢。

    最佳答案

    看起来它可能不适用,因为我在问题中没有看到它,但我对此的回答是,在网络配置中,我必须删除对 <remove name="OPTIONSVerbHandler" /> 的指令

    感谢在 this SO question 结尾处发布它的人

    关于asmx - 可以将 ASMX 配置为响应 HTTP 1.1 OPTIONS 请求吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8206172/

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