getXMLHttpRequest 如何post跨域
时间: 2024-01-27 09:04:30 浏览: 20
XMLHttpRequest 的跨域请求需要进行特殊处理,以下是一个简单的示例:
```javascript
var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://otherdomain.com/api', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log(xhr.responseText);
}
};
xhr.send(JSON.stringify({key: 'value'}));
```
需要注意的是,在进行跨域请求时,需要在服务端设置相应的 CORS 头信息,以允许跨域访问。例如,在 PHP 中可以通过以下代码设置:
```php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Allow-Headers: Content-Type");
```
这样就可以在跨域请求时,将这些头信息返回给客户端,以允许跨域访问。
相关问题
getXMLHttpRequest post如何跨域
XMLHttpRequest的跨域请求有两种方式:
1. CORS(Cross-Origin Resource Sharing)跨域资源共享
可以在服务端设置响应头,允许指定的域名或者IP地址访问。
例如,在服务端设置以下响应头:
```
Access-Control-Allow-Origin: http://www.example.com
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: X-Requested-With, Content-Type
Access-Control-Max-Age: 86400
```
其中,`Access-Control-Allow-Origin`表示允许访问的域名或者IP地址,`Access-Control-Allow-Methods`表示允许的请求方式,`Access-Control-Allow-Headers`表示允许的请求头,`Access-Control-Max-Age`表示预检请求的有效期。
2. JSONP(JSON with Padding)
在客户端通过创建一个script标签,src属性指向跨域请求的URL,服务端返回一段JavaScript代码,并在代码中调用一个在客户端定义的回调函数,将数据作为参数传递给回调函数。
例如,客户端代码:
```
function callback(data) {
console.log(data);
}
var script = document.createElement('script');
script.src = 'http://www.example.com/api?callback=callback';
document.getElementsByTagName('head')[0].appendChild(script);
```
服务端返回的代码:
```
callback({"name": "Bob", "age": 20});
```
axios post跨域
回答: 当使用axios进行post请求时出现跨域问题,有几种解决方案可以尝试。首先,可以将要发送的对象中的属性写在URL中,这种方法最不推荐。例如:`this.$axios.post('http://383vm21556.eicp.vip/shgvp/ceshi?username=${username}&password=${password}')`。其次,可以设置请求头的Content-Type为`application/x-www-form-urlencoded`,例如:`axios.defaults.headers.post\['Content-Type'\] = 'application/x-www-form-urlencoded'`。这种方法可以解决一些跨域问题。另外,还可以在后端进行相应的配置来解决跨域问题。总的来说,在前端解决跨域问题比较方便,但在某些情况下可能需要后端的配合。
#### 引用[.reference_title]
- *1* *2* *3* [axios解决post请求跨域问题](https://blog.csdn.net/weixin_45124398/article/details/116669036)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]