html表格发布正常时无法发布ajax发布

时间:2019-01-26 00:59:02

标签: jquery html ajax forms cors

我正在尝试向.asp API发出ajax http发布请求。问题是Chrome控制台给了我

  

选项http://www.myurl.com/api.asp 405(不允许使用方法)   从源'null'对'http://www.myurl.com/api.asp'处XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:邮件头上没有'Access-Control-Allow-Origin'标头要求的资源。使用HTML表单发布效果完美。是不是很奇怪?

HTML代码

<form action="http://www.myurl.com/api.asp" id="a_form" name="a_form" method="POST">
   <table>
      <tbody>
         <tr>
            <td>name1:</td>
            <td><input name="name1" maxlength="30"></td>
         </tr>
         <tr>
            <td>name2:</td>
            <td><input name="name2" maxlength="30"></td>
         </tr>
      </tbody>
   </table>
</form>
<input type="button" value="submit" onclick="document.a_form.submit();" id="button1" name="button1">

jQuery代码

$.ajax({
    url: 'http://www.myurl.com/api.asp',
    data: {
        name1: "test",
        name2: "test67"
    },
    type: "post",
    success: function(response) {
        console.log(response);
    },
    error: function(textStatus) {
        console.log(textStatus);
    }

})

html和ajax请求之间是否有区别? 我也尝试过头文件:{'Access-Control-Allow-Origin':'*'},但没有用。 另外,该服务器不是我的服务器,因此我无法在其中进行任何更改。

感谢阅读

1 个答案:

答案 0 :(得分:0)

  

该服务器也不属于我,因此我无法在此进行任何更改。

您必须在服务器上进行更改才能启用CORS,从而允许浏览器向其他域发出AJAX请求。出于安全原因,这是设计使然。有关更多信息,请参见此:https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS