无法创建发布请求

时间:2019-01-24 07:21:27

标签: javascript html post cors

我正在尝试向服务器发出发布请求,但无法创建。 我必须创建的请求是-

 POST /buy/new/product HTTP/1.1
 Host: foo.com
 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) 
 Gecko/20100101 Firefox/64.0
 Accept: application/json;api-version=3.2- 
 preview.1;excludeUrls=true;enumsAsNumbers=true
 ;msDateFormat=true;noArrayWrap=true
 Accept-Language: en-US,en;q=0.5
 Accept-Encoding: gzip, deflate
 Referer: https://foo2.com/buy/
 content-type: application/json
 origin: https://foo.com
 Content-Length: 76
 Connection: close
 Cookie: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 {"buyId":"3232323-32-3-23-23232-3","force":false,"token":11111111111}

但是我根据我的代码发出的请求是-

 OPTIONS /buy/new/product HTTP/1.1
 Host: foo.com
 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) 
 Gecko/20100101 Firefox/64.0
 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
 Accept-Language: en-US,en;q=0.5
 Accept-Encoding: gzip, deflate 
 Access-Control-Request-Method: POST
 Access-Control-Request-Headers: content-type
 Referer: http://foo.com/
 Origin: http://foo.com
 Connection: close

我使用的代码-

 <html>
 <body>
 <center>
 <h2>Buy Now</h2>

 <div id="demo">
 <button type="button" onclick="buy()">Buy Now</button>
 </div>

 <script>
 function buy() {
 var xhttp = new XMLHttpRequest();
 xhttp.onreadystatechange = function() {
 if (this.readyState == 4 && this.status == 200) {
 document.getElementById("demo").innerHTML = alert(this.responseText);
 }
 };
 xhttp.open("POST", "https://foo.com//buy/new/product", true);
 xhttp.withCredentials = true;
 xhttp.setRequestHeader("Content-Type","application/json;api-version=3.2- 
 preview.1");
 xhttp.send(JSON.stringify('{"buyId":"3232323-32-3-23-23232- 
 3","force":false,"token":11111111111}')); 
 }
 </script>

 </body>
 </html>

请帮助我解决此问题。当点击按钮购买它并查看开发人员工具时,我收到了Option请求。我也想发送数据{“ buyId”:“ 3232323-32-3-23-23232-3”,“ force”:false,“ token”:11111111111} 但我无法将其发送到我的服务器。            谢谢

1 个答案:

答案 0 :(得分:0)

之所以发生这种情况,是因为如果来自两个不同URL(例如www.abc.com到www.xyz.com)的浏览器作为一种安全性阻止了该请求。您可以通过在您请求的后端服务器上配置CORS来解决此问题,或者测试一下是否可以在将解决该问题的浏览器中使用CORS插件。例如,在chrome中,您可以使用以下插件禁用CORS https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en