在 laravel vapor signed-storage-url 中使用 Axios 默认值
Use Axios defaults in laravel vapor signed-storage-url
使用 Tymon jwt 令牌进行身份验证。 Laravel 工作正常。
当使用 Laravel vapor 的上传到 S3 代码时,我无法让 signed-storage-url 使用我的 axios 默认值:
axios.defaults.headers.common["Authorization"] = 'Bearer ' + token;
文档中显示的存储方法:
Vapor.store(this.$refs.file.files[0], {
progress: progress => {
this.uploadProgress = Math.round(progress * 100);
}
}).then(response => {
...
它在 npm 包的 index.js 中调用它:
async store(file, options = null) {
// want this to use my default header.
const response = await axios.post('/vapor/signed-storage-url', {
'bucket': options.bucket || '',
'content_type': options.contentType || file.type,
'expires': options.expires || ''
});
可能与 npm 模块不在正确范围内有关。
我已经覆盖 vapor-core signed-storage-url 控制器来使用令牌,并且可以让它在 Postman 中正常工作。
它调用 Vapor.store 不会将令牌添加到 axios 调用中,我看不到传递 headers.
的方法
编辑:您无需注册 Vapor 即可使用这些软件包。
composer require laravel/vapor-core
和
npm install --save-dev laravel-vapor
已解决
所以为了完成这项工作,我将异步存储方法复制到我的 vue 组件方法并从那里调用它。获取默认 headers 但 ...
这造成了 S3 的 axios header 问题,通过这样做解决了:
async store(file, options = null) {
const response = await axios.post('/vapor/signed-storage-url', {
'bucket': options.bucket || '',
'content_type': options.contentType || file.type,
'expires': options.expires || ''
});
if (typeof options.progress === 'undefined') {
options.progress = () => {};
}
// This is the fix for the headers. Instance just for the S3 PUT
var instance = axios.create();
instance.defaults.headers.common = {};
const s3Response = await instance.put(response.data.url, file, {
headers: response.data.headers,
onUploadProgress: (progressEvent) => {
options.progress(progressEvent.loaded / progressEvent.total);
}
});
response.data.extension = file.name.split('.').pop()
return response.data;
},
感谢https://github.com/axios/axios/issues/382#issuecomment-254712154
使用 Tymon jwt 令牌进行身份验证。 Laravel 工作正常。
当使用 Laravel vapor 的上传到 S3 代码时,我无法让 signed-storage-url 使用我的 axios 默认值:
axios.defaults.headers.common["Authorization"] = 'Bearer ' + token;
文档中显示的存储方法:
Vapor.store(this.$refs.file.files[0], {
progress: progress => {
this.uploadProgress = Math.round(progress * 100);
}
}).then(response => {
...
它在 npm 包的 index.js 中调用它:
async store(file, options = null) {
// want this to use my default header.
const response = await axios.post('/vapor/signed-storage-url', {
'bucket': options.bucket || '',
'content_type': options.contentType || file.type,
'expires': options.expires || ''
});
可能与 npm 模块不在正确范围内有关。
我已经覆盖 vapor-core signed-storage-url 控制器来使用令牌,并且可以让它在 Postman 中正常工作。 它调用 Vapor.store 不会将令牌添加到 axios 调用中,我看不到传递 headers.
的方法编辑:您无需注册 Vapor 即可使用这些软件包。
composer require laravel/vapor-core
和
npm install --save-dev laravel-vapor
已解决 所以为了完成这项工作,我将异步存储方法复制到我的 vue 组件方法并从那里调用它。获取默认 headers 但 ...
这造成了 S3 的 axios header 问题,通过这样做解决了:
async store(file, options = null) {
const response = await axios.post('/vapor/signed-storage-url', {
'bucket': options.bucket || '',
'content_type': options.contentType || file.type,
'expires': options.expires || ''
});
if (typeof options.progress === 'undefined') {
options.progress = () => {};
}
// This is the fix for the headers. Instance just for the S3 PUT
var instance = axios.create();
instance.defaults.headers.common = {};
const s3Response = await instance.put(response.data.url, file, {
headers: response.data.headers,
onUploadProgress: (progressEvent) => {
options.progress(progressEvent.loaded / progressEvent.total);
}
});
response.data.extension = file.name.split('.').pop()
return response.data;
},
感谢https://github.com/axios/axios/issues/382#issuecomment-254712154