Ajax请求等同于curl命令

时间:2016-05-26 19:34:05

标签: jquery ajax curl reactjs

这是我的后端工程师给出的curl命令。它在命令行中运行良好。我需要把它翻译成reactjs。我无法做到这一点,所以我试图用ajax做到这一点。

curl -v -H "Origin: http://example.com" -H "Access-Control-Request-Method: POST" -H "Access-Control-Request-Headers: X-Requested-With" -H "Authorization: ELS <your_token_here>" -X OPTIONS  "localhost:9000/proj/user/token/<your_token_here>"

JS:

  _login(username,password){
    console.log(username+password)
    $.ajax({
        type: 'POST',
        contentType:'application/json',
        url: 'http://localhost:9000/proj/user/token',
        beforeSend: function(xhr) {
             xhr.setRequestHeader("Origin", "http://localhost:3000");
             xhr.setRequestHeader("Access-Control-Request-Method", "POST");
             xhr.setRequestHeader("Access-Control-Request-Headers", "X-Requested-With");
             xhr.setRequestHeader("tokem", token);

        }, success: function(data){
            console.log(dtata);
        }, error: function(e){
            console.log(e);
        }
    })
  }

我得到的错误就像jquery-2.2.4.min.js:4拒绝设置不安全的标题&#34; Origin&#34;等

1 个答案:

答案 0 :(得分:0)

在Web浏览器中使用JavaScript,您无法执行与使用cURL手动执行相同的请求。这是因为安全规定。在他们身上是你不能设置Origin标头。浏览器强制Origin标头是真正的“起源”。另见:Chrome Extension: how to change origin in AJAX request header?

因此,如果没有设置Origin标头,请尝试按预期工作。