With Angularjs, $http post return response error in Microsoft Edge

穿精又带淫゛_ 提交于 2019-12-14 01:26:46

问题


Well, while I develop an admin page for test,

a weird problem occurred in Microsoft Edge.

Here's part of source code to fetch response from server of loginCtrl.js

        $http({
            method: 'POST',
            url: Define.apiUrl + 'admin/login',
            data: {
                user_id: $scope.login_email,
                password: $scope.login_password
            }
        })
        .then(function (response) {
            if (response.data.success) {
                $cookieStore.put(Define.userInfo, response.data.info);
                $cookieStore.put(Define.userToken, response.data.token);
            }
        }, function (data) {
            console.log('errors!');
            console.log(data);
        });

This works well in Chrome and IE

But in Microsoft Edge, This returns error like below

data = null
status = -1
statusText = ""

and below are each status of related files.

        # loginCtrl.js


        ## Chrome response status

        Accept-Ranges:bytes
        Cache-Control:public, max-age=0
        Connection:keep-alive
        Content-Length:1877
        Content-Type:application/javascript
        Date:Fri, 18 Aug 2017 04:06:49 GMT
        ETag:W/"755-15df385a23e"
        Last-Modified:Fri, 18 Aug 2017 04:06:47 GMT


        ## Chrome request status

        Accept:'*/*'
        Accept-Encoding:gzip, deflate, br
        Accept-Language:ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4
        Connection:keep-alive
        Host:localhost:9000
        If-Modified-Since:Fri, 18 Aug 2017 02:51:00 GMT
        If-None-Match:W/"6f5-15df340413d"
        Referer:http://localhost:9000/
        User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
        AppleWebKit/537.36 (KHTML, like Gecko) 
        Chrome/60.0.3112.101 Safari/537.36


        ## Edge response status

        Accept-Ranges: bytes
        Cache-Control: public, max-age=0
        Connection: keep-alive
        Content-Length: 1807
        Content-Type: application/javascript
        Date: Fri, 18 Aug 2017 02:06:14 GMT
        ETag: W/"70f-15df3173adf"
        Last-Modified: Fri, 18 Aug 2017 02:06:12 GMT


        ## Edge request status

        Accept: application/javascript, '*/*'; q=0.8
        Accept-Encoding: gzip, deflate
        Accept-Language: ko-KR
        Connection: Keep-Alive
        Host: localhost:9000
        Referer: http://localhost:9000/
        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
        AppleWebKit/537.36 (KHTML, like Gecko) 
        Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063

I wonder why only Edge cannot get right responses.

I tried to make headers like 'Content-Type', 'Cache-Control' or add config like cache : false.

But these couldn't fix this problem.

Did I miss something??

Plz any handsome or pretty programmer save me


回答1:


I've tried to find solution of this, and finally I got one.

Some answers suggested adding tags like

<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="Mon, 26 Jul 1997 05:00:00 GMT" />

or adding code into config like

$httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon, 26 Jul 1997 05:00:00 GMT';
// extra
$httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';
$httpProvider.defaults.headers.get['Pragma'] = 'no-cache';

but these couldn't solve this.

Finally I saw one answer said this may occurred by a kind of policy handling caches in Edge.

This may occur when I use local server to send requests or get responses.

And it will gonna disappear when test on other server not on local.

Actually, I'm still using local server, so I don't know whether this work or not.



来源:https://stackoverflow.com/questions/45747418/with-angularjs-http-post-return-response-error-in-microsoft-edge

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!