我有一个用 Laravel 5.1 制作的 REST api,托管在远程服务器上。现在,我尝试从另一个网站(我在本地)使用该 API。
在 Laravel 中,我设置了发送 CORS 标头所需的行。我还使用 Postman 测试了 API,一切似乎都正常!
在前端
然后,在网站中我使用ajax发送了POST请求,代码如下:
var url="http://xxx.xxx.xxx.xxx/apiLocation";
var data=$("#my-form").serialize();
$.ajax({
type: "POST",
url: url,
data: data,
headers: { 'token': 'someAPItoken that I need to send'},
success: function(data) {
console.log(data);
},
dataType: "json",
});
购买然后我在控制台中收到此错误:
XMLHttpRequest 无法加载http://xxx.xxx.xxx.xxx/apiLocation。
对预检请求的响应未通过访问控制检查:否
请求中存在“Access-Control-Allow-Origin”标头
资源。起源 'http://localhost' 因此不允许访问。
在后端
在 API 中我设置了这个(使用 Laravel 中间件来设置标头):
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
所以,我很困惑到底问题出在哪里。
- 在服务器里?但为什么 Postman 工作得很好呢?
- 是在 Ajax 调用中吗?那么,那我应该添加什么呢?