我在nodejs / expressjs中开发了一个api,当时我正在使用Postman进行测试,它可以正常工作,但是当我在Laravel中使用axios调用进行测试时,则无法正常工作。
我得到这些错误:
CORS策略已阻止从源“ https://api.xxxxxxx/api/v1/connectors/mysql/test”访问“ https://account.loc”处的XMLHttpRequest:请求标头字段x-csrf-token不允许访问控制标头字段中的Access-Control-Allow-Headers飞行前反应。
和
错误:网络错误
在createError(app.js:18565)
在XMLHttpRequest.handleError(app.js:18449)
警告:
跨域读取阻止(CORB)阻止了MIME类型为application / json的跨域响应https://api.xxxxxxxxx/api/v1/connectors/mysql/test。有关更多详细信息,请参见https://www.chromestatus.com/feature/5629709824032768。
我试图像这样在API的标头中添加CORS:
div
我正在在线测试API网站上进行测试,该调用工作正常,所以现在我想知道Laravel配置中是否缺少某些内容。 我意识到API客户端永远不会从标头中读取令牌(仅在Laravel + axios中)。 有人可以帮我吗?
谢谢!
答案 0 :(得分:1)
将cors软件包安装在node.js /express.js中
答案 1 :(得分:0)
由于x-csrf令牌已被CORS策略阻止。您必须在laravel中的 index.php文件 中添加Access-Control-Allow-Headers,您将在公共文件夹中找到该文件。将解决您的问题。现在,将以下几行粘贴到laravel的index.php文件中。
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, X-XSRF-Token, Origin');
我希望这能解决您的问题
答案 2 :(得分:-1)
该消息表明x-crsf-token
标头没有在快速应用中提供。您应该将其添加到您的快速应用中。或在cors中禁用预检。