IIS7.5下的RESTful不能跨域PUT和POST

发布于 2022-09-03 15:00:51 字数 2017 浏览 34 评论 0

用Postman测试成功,但是在自己写的jQuery代码中测试失败
可以Get,但是不能PUT和POST

IIS7.5中web.config已经做了如下设置

<system.webServer>
    <httpProtocol> 
      <customHeaders> 
        <add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, OPTIONS" /> 
        <add name="Access-Control-Allow-Headers" value="X-Requested-With" /> 
        <add name="Access-Control-Allow-Origin" value="*" /> 
      </customHeaders> 
    </httpProtocol> 
</system.webServer>

jQuery代码

$.ajax({
    url: 'http://xxx.xxx.xxx.xxx:nnnn/api/apps/791',
    type: 'PUT',
    data: '{"Name": "Tom"}',
    dataType: 'json',
    contentType: 'application/json',
    crossDomain: true,
    beforeSend: function( xhr ) { 
        xhr.setRequestHeader('X-Requested-With', 'jQuery'); 
    },
    success: function( response ) {
        console.log('ok');
    }
});

浏览器 Chrome 53

General
Request URL:http://XXX.XXX.XXX.XXX:10088/api/apps/791
Request Method:OPTIONS
Status Code:405 Method Not Allowed
Remote Address:XXX.XXX.XXX.XXX:10088


Response Headers
Access-Control-Allow-Headers:X-Requested-With
Access-Control-Allow-Methods:GET, PUT, POST, DELETE, OPTIONS
Access-Control-Allow-Origin:*
Allow:PUT,GET
Cache-Control:no-cache
Content-Length:66
Content-Type:application/json; charset=utf-8
Date:Tue, 13 Sep 2016 02:00:41 GMT
Expires:-1
Pragma:no-cache
Server:Microsoft-IIS/7.5
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET


Request Headers
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,zh;q=0.8,en;q=0.6,ja;q=0.4,zh-TW;q=0.2
Access-Control-Request-Headers:content-type, x-requested-with
Access-Control-Request-Method:POST
Connection:keep-alive
Host:XXX.XXX.XXX.XXX:10088
Origin:http://XXX.XXX.XXX.YYY:7788
Referer:http://XXX.XXX.XXX.YYY:7788/jqdebug.html
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.101 Safari/537.36

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

弄潮 2022-09-10 15:00:51

自问自答。
答案来自这篇文章:
Vue.js——基于$.ajax实现数据的跨域增删查改
这是大侠keepfool的vue.js系列文章之一,强烈推荐!

我的这个REFTful服务端是用VS2013 ASP.Net Web API 2写的,它有一个插件叫Microsoft.AspNet.WebApi.Cors可以很方便得设置CORS
需要注意的是如果用了这个插件,那么web.config中的以下代码要删除

<system.webServer>
    <httpProtocol> 
      <customHeaders> 
        <add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, OPTIONS" /> 
        <add name="Access-Control-Allow-Headers" value="X-Requested-With" /> 
        <add name="Access-Control-Allow-Origin" value="*" /> 
      </customHeaders> 
    </httpProtocol> 
</system.webServer>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文