Vue.js无效,&#34错误;自动填充$ HTTP_RAW_POST_DATA已弃用,将在以后的版本中删除。"

时间:2017-02-16 10:35:50

标签: php mysql laravel vue.js

我使用laravel 5.4作为后端,并使用Vue.js作为前端。我将使用Vue将值传递给Controller并存储数据。但是当我检查控制台时,响应显示错误

  

不推荐自动填充$HTTP_RAW_POST_DATA   在将来的版本中删除。

我使用的服务器是WAMPServer 3.0.6。 我发现解决方案是更改php.ini,$HTTP_RAW_POST_DATA=-1,但仍然有错误。

那还有另一个解决方案吗?

这是我的Vue代码

<script>
export default {
    mounted(){

    },

    data() {
        return {
            content :'',
            not_working: true
        }
    },

    methods:{
        create_post() {
            this.$http.post('/create/post', { content:this.content })
                .then((resp)=> {
                    this.content = ''
                    noty({
                        type: 'success',
                        layout: 'bottomRight',
                        text: 'Your post has been posted.'
                    });
                    console.log(resp)

            })
        }
    },

    watch :{
        content(){
            if(this.content.length > 0)
                this.not_working = false
            else
                this.not_working= true
        }
    }
}

我的控制器

public function store(Request $request){

    return Post::create([
        'body' => $request->content,
        'user_id' => Auth::id()

    ]);

}

更新: 在我从互联网上研究之后,看起来问题已经解决了,但是出现了新的问题,这就是

TokenMismatchException

我加入了<meta name="csrf-token" content="{{ csrf_token() }}">

但仍然有这个错误,我现在该怎么办?

3 个答案:

答案 0 :(得分:1)

因为我懒得找到一种方法将令牌添加到vue资源函数中。然后我只需将其更改为axios,因为它可以避免此错误。所以我只是改变

 this.$http.post('/create/post', { content:this.content })

 axios.post('/create/post', { content:this.content })

然后它可以解决csrf-token问题。我认为这只适用于laravel 5.4,因为它是预定义的。

答案 1 :(得分:0)

此问题的解决方案是在您的请求中附加正确的标头, 这是适当的帖子请求和正确的标题,我已经测试了自己,它正在工作。

var config = {
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    responseType: 'blob'
 };

axios.post('/user', {}, config)
.then((response)=>{
    console.log(response)
}).catch((error)=>{
    console.log(error.response.data)
});

我希望服务器能够很好地对待您并且不会返回有关 HTTP_RAW_POST_DATA 的警告。

答案 2 :(得分:0)

trusted_hosts:  ['192.168.43.218', '192.168.43.218']

// im使用laravel 5.4 vue js 2,无需附加适当的标头。只需添加 toFormData