【问题标题】:AXIOS POST failed access control check: No 'Access-Control-Allow-Origin' .HTTP status code 405AXIOS POST 访问控制检查失败:没有 'Access-Control-Allow-Origin' .HTTP 状态代码 405
【发布时间】:2018-11-27 19:01:20
【问题描述】:

我不知道自己做错了什么,需要帮助。

function loadDoy() {
    axios({
        method: 'post',
        headers: {

"Access-Control-Allow-Origin": "*",
            'Content-Type': 'application/json',
        },
        url: apiPostUrl,
        data: {
            user: "webuser",
            password: "m0nk3yb@rz",
            layout: "Main Menu"
        },
    })
    .then(function(response) {
        this.token = response.data.token;
        //if login token works then get records
        getRecords();
    })
    .catch(function(xhr, ajaxOptions, thrownError) {
        alert(xhr.status);
        alert(thrownError);
    });
}

【问题讨论】:

  • 这是我的错误:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'null' 不允许访问。响应的 HTTP 状态代码为 405。

标签: api cors axios


【解决方案1】:

您可以在 axios 帖子的标题处使用 'crossDomain': true,这是由于 cors 错误。您的浏览器正在生成一个Preflight Request,它使用 OPTIONS HTTP 方法。这是为了检查服务器是否允许 POST 请求 - 405 状态代码是在响应 OPTIONS 请求时发送的,而不是您的 POST 请求

在这种情况下,以下是导致请求被预检的原因:

如果 Content-Type 标头的值不是以下值:

  1. application/x-www-form-urlencoded

  2. 多部分/表单数据

  3. 文本/纯文本

Content-Type 标头的值被 axios 设置为 application/json;charset=utf-8。使用 text/plain;charset=utf-8 或 text/plain 可以解决问题:您可以尝试如下使用。

来源:App Script sends 405 response when trying to send a POST request

    axios({
        method: 'post',
        headers: {    
            'crossDomain': true,
            //'Content-Type': 'application/json',
            'Content-Type': 'text/plain;charset=utf-8',
        },
        url: apiPostUrl,
        data: {
            user: "webuser",
            password: "m0nk3yb@rz",
            layout: "Main Menu"
        },
    })
    .then(function(response) {
        this.token = response.data.token;
        //if login token works then get records
        getRecords();
    })
    .catch(function(xhr, ajaxOptions, thrownError) {
        alert(xhr.status);
        alert(thrownError);
    });

【讨论】:

  • 还是不行!它说“访问控制允许来源”设置为空?我该如何解决这个问题?
  • 我已经更新了答案,请参考此来源以获取更多信息,如果有的话请告诉我,stackoverflow.com/questions/44910180/…
猜你喜欢
  • 1970-01-01
  • 2018-02-02
  • 1970-01-01
  • 1970-01-01
  • 2014-08-04
  • 1970-01-01
  • 2018-11-09
  • 2017-06-15
  • 2019-07-25
相关资源
最近更新 更多