我正在尝试使用 DropZone (www.dropzonejs.com/) 发布一个 xlsx 文件,以便在客户端读取。这在我使用 ember 服务器的测试环境中有效。但是,一旦我将其带到 IIS8,我就会收到 405 方法不允许错误。DropZone 使用该文件发出 POST 请求。我尝试将 POST 动词添加到 StaticFile Handler Mapping,但似乎没有影响它。我想知道这是否与 Origin 没有尾部斜杠而 Referer 有有关。
站点的 IIS 中的 StaticFile Handler 映射的路径为 *,且 Verbs 设置为“所有 Verbs”,Access 为“读取”,映射为“文件或文件夹”
这是我使用 Chrome 开发者工具所看到的内容:
POST http://<my site URL>/# 405 Method Not Allowed 28ms
一般的
Remote Address:<my server ip>:80
Request URL:http://<my site url>/
Request Method:POST
Status Code:405 Method Not Allowed
响应标头
Access-Control-Allow-Headers:Accept, Content-Type, Origin
Access-Control-Allow-Methods:GET, PUT, POST, DELETE, OPTIONS
Access-Control-Allow-Origin:*
Allow:GET, HEAD, OPTIONS, TRACE
Cache-Control:private
Content-Length:5291
Content-Type:text/html; charset=utf-8
Date:Thu, 10 Sep 2015 23:20:03 GMT
Server:Microsoft-IIS/8.0
X-Powered-By:ASP.NET
请求标头
Accept:application/json
Accept-Encoding:gzip, deflate
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6
Cache-Control:no-cache
Connection:keep-alive
Content-Length:252016
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryJMRgHAltxqUm8aBL
Host:labeleditorclient
Origin:http://<my site URL>
Referer:http://<my site URL>/
User-Agent:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36
X-Requested-With:XMLHttpRequest
请求负载
------WebKitFormBoundaryJMRgHAltxqUm8aBL
Content-Disposition: form-data; name="file"; filename="1.xlsx"
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
------WebKitFormBoundaryJMRgHAltxqUm8aBL--
答案1
我找到了问题所在。默认页面是 index.html。没有处理 POST 的 html 处理程序。
因此我按照这里的说明添加了一个 html 处理程序http://sysadmin.circularvale.com/server-config/enabling-post-requests-to-static-eg-html-pages-using-iis-7/
此后,它就起作用了。