使用 XMLHttpRequest 调用 URL 和 Form 有什么区别
Whats the difference between calling a URL using XMLHttpRequest and a Form?
我正在使用静态html/javascript页面(没有php等)
我有一个静态的HTML网页。 当页面加载时,它会向另一个域上的目标服务器发出 XMLHttp请求,等待响应,并分析响应 JSON。
function executeRequest() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
var response = JSON.decode(xhttp.responseText);
alert(response.access_token)
alert(response.expires_in)
}
};
var tmpURL = "https://target.url.com/oauth2/access_token"
xhttp.open("POST", tmpURL, true);
xhttp.send();
}
XMLHttpRequest 无法加载 [target.url.com] 没有"访问控制允许源" 标头存在于请求的资源上。 因此,不允许访问源"https://local.url.com"。
为了排除 CORS 的问题,我可以使用表单请求 URL。当用户单击"提交"按钮时,它会带来成功的响应。
<form method="POST" action="https://target.url.com/oauth2/access_token">
... form inputs here
<input type="submit" value="Submit form">
</form>
为什么目标服务器对 xmlHttpRequest 的响应与表单的响应不同?
您遇到了 CORS 问题。
XMLHttpRequests
受 CORS 规则的约束。
<form method="POST" action="http://xxx">
纯粹使用 HTML 完成的帖子不受 CORS 规则的约束。
就这么简单。
允许此跨源表单帖子的部分原因是浏览器将更改浏览器窗口以显示表单帖子的响应,以便跨源站点控制接下来发生的事情。 XMLHttpRequest
请求页面控制接下来会发生什么,因为XMLHttpRequest
后不会自动加载或显示任何页面。 因此,与表单帖子相比,XMLHttpRequest
更容易造成恶作剧。
有关进一步的说明,请参阅跨域表单 POSTing。
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- 在ember/handlers中使用value和valueBinding有什么区别
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- Math.min()和Math.max()之间有什么区别?在Javascript中
- angularjs中的ng网格和ui网格有什么区别
- webpack开发模式和生产构建模式之间有什么区别
- 缓存!saveLocations()和addLocation()函数有什么区别
- 关于承诺/A+规范,术语“当时可”和“承诺”之间有什么区别
- 以下两者在javascript中有什么区别
- jquery.js和jquery.lite.js有什么区别
- 通过Nuget安装Angular JS和Angular JS核心有什么区别
- XMLHttpRequest对象的open()和send()方法之间有什么区别
- 这两种不同的创建对象文字的方法有什么区别
- jQuery中这两个词有什么区别
- 在Javascript语法中:和::和:::有什么区别
- getElementById 和 getElementsByClassName 有什么区别?
- (typeof variable === “function”) 和 jQuery.isFunction() 有什么区别
- 在使用JS的Ajax调用中,ajaxComplete和beforesend之间有什么区别
- $(e.target).find和template.find('input').value之间有什么区别
- 在javascript中,在变量名之前使用var有什么区别/优势吗