vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > VUE项目IIS部署后接口请求405错误

解决VUE项目IIS部署后接口请求405错误问题(Method Not Allowed)

作者:-清欢有味

通过排查和修改IIS处理程序映射,添加ServerSideIncludeModule模块,解决了StaticFileModule模块报错的问题,最终使得POST请求可以正常访问

VUE项目IIS部署后接口请求405错误

最开始查看接口响应,发现是StaticFileModule 模块报错,网上搜索发现都说是谓词问题,实际我操作其实修改添加POST谓词没有用。

解决方法

添加一个规则,在IIS处理程序映射中或者web.config中直接添加handlers,模块为ServerSideIncludeModule,路径为*.html。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Handle History Mode and custom 404/500" stopProcessing="true">
          <match url="(.*)" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="/" />
        </rule>
      </rules>
    </rewrite>
        <handlers>
            <add name="VuePostByHtml" path="*.html" verb="*" modules="ServerSideIncludeModule" resourceType="Either" />
        </handlers>
  </system.webServer>
</configuration>

如果没有ServerSideIncludeModule模块需要在IIS中安装服务器包含

以下仅作个人纪录

1.打开IIS,找到处理程序映射,把StaticFile请求程序映射里的谓词改成全部,发现并没有用

2.修改.NET管道托管模式发现也不起效果。一直在修改程序映射,发现只要修改了StaticFile模式条目类型就会由继承变成本地。

3.WebDev禁用以及删除重启都无法解决这个问题。

4.在官网看文档发现原因1及原因3都不是我这个情况,最后着重落在原因2,StaticFile这个处理程序上面。

访问 Internet Information Services (IIS) 网站时出现 HTTP 错误 405.0 - Internet Information Services | Microsoft Learn

5.按照上面微软网站给出的方法,想用 ASPClassic 这个程序托管,发现我就没有asp,瞎搞一通没用,把IIS设置回退最初的版本。

6.由于之前StaticFile修改一直没有用,ASPClassic也行不通,想着就自己新建一个映射,仔细看看请求路径在index.html上,POST请求。按照这个逻辑新建一个映射,发现可以正常访问了。

7.回过头检查StaticFile文件没有ServerSideIncludeModule模块,在里面添加这个模块之后就会报错,感觉是继承重名或者.NET模式环境问题,不想再研究了,回退对StaticFile的修改。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文