至少可以说,我发生了一件奇怪的事情。
提交时使用post
方法的html表单使用的是options
,而这里是html代码:
<form action="https://omitted" method="post" id="canvasForm">
<div class="form-group" style="margin-top: 10%; text-align: center;">
<h1>Canvas Integration</h1>
<label style="text-align: right;" for="school_name" class="col-sm-4 control-label">School Prefix *</label>
<div class="col-sm-10">
<input type="text" style="margin-right: 1%; margin-bottom: 2%; width:60%" class="form-control" name="school_name" placeholder="School Prefix" tabindex="1" required>
<!-- <i class="fa fa-question-circle" aria-hidden="true"></i> -->
</div>
<label style="text-align: right;" for="code" class="col-sm-4 control-label">Code *</label>
<div class="col-sm-6" >
<input id="code" type="text" class="form-control" style="margin-right: 1%; margin-bottom: 2%; width:60%" name="code" tabindex="1" placeholder="code" required>
</div>
<label style="text-align: right;" for="code" class="col-sm-4 control-label">School Canvas URL *</label>
<div class="col-sm-6" >
<input id="canvas_url" type="text" class="form-control" style="margin-right: 1%; margin-bottom: 2%; width:60%" name="canvas_url" tabindex="1" placeholder="school canvas url" required>
</div>
<label style="text-align: right;" for="clientid" class="col-sm-4 control-label">ID *</label>
<div class="col-sm-6">
<input type="text" class="form-control" style="margin-bottom: 2%;margin-right: 1%; width:60%" name="clientid" placeholder="ID" tabindex="1" required>
<div class="tooltip">
<i class="fa fa-question-circle" aria-hidden="true" >
<img class="tooltiptext" src="images/clientid.png" style="width: 550px"></i>
</div>
</div>
<label style="text-align: right;" for="securitykey" class="col-sm-4 control-label">Key *</label>
<div class="col-sm-6">
<input type="text" class="form-control" style="margin-right: 1%; margin-bottom: 2%; width:60%" name="securitykey" placeholder="Key" tabindex="1" required>
<div class="tooltip">
<i class="fa fa-question-circle" aria-hidden="true" >
<img class="tooltiptext" src="images/securitykey.png" style="width: 550px"></i>
</div>
</div>
<div class="col-sm-6">
<input id="redirect_url" type="hidden" class="form-control" style="margin-right: 1%; margin-bottom: 2%; width:60%;float: center;" name="redirect_url" placeholder="Canvas URL" tabindex="1" required>
</div>
</div>
<div class="form-group" style="text-align: center;">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-primary btn-w-md" >Submit</button>
</div>
</div>
<div class="form-group" style="text-align: center;">
<div id="response" class="col-sm-offset-2 col-sm-10">
</div>
</div>
</form>
我有一些提交表单的JS代码:
form.onsubmit = function (e) {
// stop the regular form submission
e.preventDefault();
// collect the form data while iterating over the inputs
var data = {};
for (var i = 0, ii = form.length; i < ii; ++i) {
var input = form[i];
if (input.name) {
data[input.name] = input.value;
}
}
// construct an HTTP request
var xhr = new XMLHttpRequest();
xhr.open(form.method, form.action, true);
xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
// send the collected data as JSON
xhr.send(JSON.stringify(data));
xhr.onloadend = function (response) {
console.log('response from server',response);
var responseHtml = document.getElementById('response');
if(response.target.status==400){
responseHtml.innerHTML = '<div id="response" class="alert alert-success" role="alert" >' + response.target.response +'. Please contact edquire support team at support@edquire.com.' + '</div>';
} else if (response.target.status==200) {
responseHtml.innerHTML = '<div id="response" class="alert alert-success" role="alert" >' + response.target.response +'! Your Canvas resource is successfully connected with us :)' + '</div>';
} else {
responseHtml.innerHTML = '<div id="response" class="alert alert-success" role="alert" >' + 'Something went wrong :( Please Try Again!' + '</div>';
}
};
};
答案 0 :(得分:0)
这是CORS如何运作的。您正在向远程主机提交POST请求。首先,您的浏览器提交OPTIONS请求以检查远程主机是否接受来自其他主机的HTTP请求。如果确实如此,则POST请求将在之后提交。
答案 1 :(得分:-1)
对于其他客户端,每个POST请求后跟一个POST。 这样做是为了验证一些事情,例如:
您可以在此处找到有关其他主题的更多信息: What is the reason behind using OPTION request before POST on CORS requests?