![](/img/trans.png)
[英]Post request using axios fails with “Response for preflight is invalid” error
[英]Vue js axios post request to golang server, Preflight error
我嘗試將前端網站(localhost:8888)的api請求發送到golang后端(localhost:8000)。 我收到下面列出的錯誤。 我查看了stackoverflow,問題似乎是跨源請求和預檢請求處理。 我添加了標題,如下所示,但問題仍然出現。 我希望你們能幫助我:)
Axios錯誤:
OPTIONS http://localhost:8000/api/heimdall/signup 404 (Not Found)
Failed to load http://localhost:8000/api/heimdall/signup: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8888' is therefore not allowed access. The response had HTTP status code 404.
Mux CORS處理程序
methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})
originsOk := handlers.AllowedOrigins([]string{"*"})
headersOk := handlers.AllowedHeaders([]string{"Accept", "Content-Type", "Content-Length", "Accept-Encoding", "X-CSRF-Token", "Authorization"})
log.Fatal(http.ListenAndServe(":8000", handlers.CORS(methodsOk, originsOk, headersOk)(r)))
Axois代碼:
'use strict';
var axios = require('axios');
function Signup(email, password) {
var apiURL = 'http://localhost:8000/api/heimdall/signup';
return new Promise((resolve, reject) => {
axios.post(apiURL, {
email: email,
password: password
})
.then(respone => {
console.log('Promise Signup response:', respone);
resolve(respone);
}, error => {
console.log('Promise Signup error:', error);
reject(error);
});
});
}
export {
Signup
};
也許您可以嘗試一下,我在我的Web API上使用了它。
var handler http.Handler
{
handler = handlers.CORS(
handlers.AllowedOrigins([]string{"*"}),
handlers.AllowedMethods([]string{"GET", "PUT", "PATCH", "POST", "DELETE", "OPTIONS"}),
handlers.AllowedHeaders([]string{"Origin", "Authorization", "Content-Type"}),
handlers.ExposedHeaders([]string{""}),
handlers.MaxAge(10),
handlers.AllowCredentials(),
)(r)
handler = handlers.RecoveryHandler(handlers.PrintRecoveryStack(true))(handler)
}
http.Handle("/", handler)
http.ListenAndServe(":8080", nil)
我已經在laravel 5.5(PHP)中解決了此類問題
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Max-Age: 1000");
header("Access-Control-Allow-Headers: X-Requested-With, Content-Type, Origin, Cache-Control, Pragma, Authorization, Accept, Accept-Encoding");
header("Access-Control-Allow-Methods: PUT, POST, GET, OPTIONS, DELETE");
你可以在golang上嘗試這種類型的標題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.