Javascript Axios如何设置类似于jQuery ajax方法的表单数据?
我在应用程序中使用axios,但我很难设置请求的内容 当前使用Javascript Axios如何设置类似于jQuery ajax方法的表单数据?,javascript,jquery,ajax,reactjs,axios,Javascript,Jquery,Ajax,Reactjs,Axios,我在应用程序中使用axios,但我很难设置请求的内容 当前使用$调用URL。ajax如下所示: $.ajax({ method: 'POST', data: { 'accountId': accountId }, url: serverUrl, /* success: ... */ }); 当我在Chrome开发工具中查看此请求时,最后我看到如下内容: $.ajax({ method: 'POST', data: { 'accountId': accountId },
$调用URL。ajax
如下所示:
$.ajax({
method: 'POST',
data: { 'accountId': accountId },
url: serverUrl,
/* success: ... */
});
当我在Chrome开发工具中查看此请求时,最后我看到如下内容:
$.ajax({
method: 'POST',
data: { 'accountId': accountId },
url: serverUrl,
/* success: ... */
});
现在,我正试图用axios做同样的事情:
axios.post(serverUrl, { accountId: accountId })
.then(/* ... */);
但是,当我在Chrome dev tools中查看请求时,我发现:
如何让axios执行与jQuery相同的格式设置?也许问题是:它们是不同的还是仅仅是代表性
另外,我注意到jQuery调用以某种方式添加了这个头:x-request-with:XMLHttpRequest
,但是要在axios中使用相同的头,我必须手动设置它。这正常吗?我是否缺少添加此标头的axios配置
谢谢如文件所述,您可以使用axios使用以应用程序/x-www-form-urlencoded
格式发送数据
来自官方文档的示例:
var params = new URLSearchParams();
params.append('param1', 'value1');
params.append('param2', 'value2');
axios.post('/foo', params);
例如,一些框架使用此标头来检测XHR请求。GrailsSpring使用此标头来标识查询XHR,并将JSON响应或HTML响应作为响应 大多数Ajax库(Prototype、2.1版的JQuery和Dojo)都包含X-Requested-With头,这表明查询是使用XMLHttpRequest进行的,而不是通过单击常规超链接或提交表单按钮来运行 安全性的一个很好的理由是它可以防止攻击,因为未经服务器通过的同意,不能将此头添加到AJAX请求的跨域中 仅允许以下标题:
- 接受
- 接受语言
- 内容语言
- 最后事件ID
- 内容类型
x-request-with
标题,您有什么意见吗?感谢你盯着Axios,我看不到任何地方设置了标题。如果希望为所有请求设置它,可以执行以下操作:axios.defaults.headers.common['x-request-with']='XMLHttpRequest'
这是jquery(和其他多个ajax库)使用的约定使服务器能够轻松地根据是否是ajax请求从同一端点提供不同的响应。在PHP脚本中,经常会检查此标题,然后呈现一个带有布局的完整页面,或者仅呈现使用ajax时可以注入页面的内容;我很乐意帮忙:)谢谢你详细的回答。问:我们说它有利于安全性,因为它不能为跨域请求添加,但事实上,我们可以配置axios并添加此标头,这是否意味着我们以某种方式绕过了安全部分?