浏览器之间的HTTP请求有所不同

瓦兰德

首先,我不太确定如何正确命名该标题或如何描述问题的“足够”程度以使其易于理解。

无论如何,我已经运行了一个wordpress安装程序,可以作为博客的后端。它安装了一个json-api-plugin。为此,我添加了一个基于Angular的前端,该前端使用jQuery的$ .ajax()将HTTP请求发送到后端。

现在,它在Chrome和Firefox中运行完美(没有尝试过IE,我在Mac上)。但是在Safari中,我遇到了一些问题。似乎有些请求有效,而另一些则无效。

例如,一个要求http://api.walander.se/json/get_posts/?page=1在所有三种浏览器中都能完美运行的请求(这也是我在Safari中唯一可以使用的请求)。同时,要求http://api.walander.se/json/get_category_index在Chrome和Firefox中有效,但在Safari中失败。

Safaris inspector-tool中给出的错误消息如下

[Error] Failed to load resource: Request header field Accept-Encoding is not allowed by Access-Control-Allow-Headers. (get_category_index, line 0)
[Error] XMLHttpRequest cannot load http://api.walander.se/json/get_category_index/. Request header field Accept-Encoding is not allowed by Access-Control-Allow-Headers. (walander.se, line 0)

在Safari中失败的所有请求都给出相同的错误消息。

如果我直接在Safari中从上方输入示例网址,则可以根据预期的响应进行操作。

{"status":"ok","count":2,"categories":[{"id":3,"slug":"development","title":"Development","description":"","parent":0,"post_count":1},{"id":2,"slug":"web","title":"Web","description":"","parent":0,"post_count":1}]}

下面,我提供一些代码示例,这些示例可能有助于理解我的问题。

这是我的Angular-RequestService,它处理对服务器的所有HTTP请求:

app.service('requestService',function() {
    var API = 'http://api.walander.local/api/';

    this.send = function( type , service , dataIn , successCallback, errorCallback , loadingInfo ) {
        $.ajax({
            url: service,
            dataType: 'json',
            type: type,
            data: dataIn,
            timeout: 10000,
            beforeSend: function() {
                if ( loadingInfo != undefined ) 
                    wLoading(loadingInfo.div,loadingInfo.text);
            },
            success: function(data, textStatus, jqXHR) {
                successCallback(data);
            },
            error: function(data , jqXHR, textStatus, errorThrown) {
                console.log("ERROR: Service failed, unable to get response");
                console.log("ERROR: textStatus: " + textStatus);
                console.log("ERROR: errorThrown: " + errorThrown);
                errorCallback(data);
            },
            complete: function() {
                if ( loadingInfo != undefined ) 
                    wRemoveLoading(loadingInfo.div);    
            }   
        });
    }
    this.get = function( service , dataIn , successCallback , errorCallback , loadingInfo ) {
        this.send( 'GET' , API+service , dataIn , successCallback , errorCallback , loadingInfo );
    }
    this.post = function( service , dataIn , successCallback , errorCallback , loadingInfo ) {
        this.send( 'POST' , API+service , dataIn , successCallback , errorCallback , loadingInfo );
    }  
});

上面的两个示例url:s都是GET类型的,这意味着我使用了reqeustService.get()函数。

以下是我如何使用requestService请求当前页面以及API类别列表的示例:

app.service('blogService',function( requestService ) {
    this.getPage = function( page , refreshBlog ) {
        requestService.get( 'get_posts/?page='+page , null , function(data) {
            handleResponse( data , refreshBlog , "page " + page );
        } , function(data) {      

        } , { div: '#post-list' , text: 'Loading posts' } );   
    }

    this.getCategories = function( refreshCategories ) {
        requestService.get( 'get_category_index', null , function(data) {
            refreshCategories(data.categories);
        } , function(data) {

        } , { div: '#category-list', text: 'Loading categories' });
    }
... ( continued ) ...
};

但是,我认为错误不在Angular代码中。我相信这与htaccess和HTTP-request-headers有关吗?

在此先感谢您的帮助!

托比亚斯·尼霍尔姆

这是一个棘手的问题。但是我想我明白了。=)

以下错误消息的原因是您向 get_categpory_index/发出请求,仅接受以下编码:gzip,deflate,sdch。

[Error] Failed to load resource: Request header field Accept-Encoding is not allowed by Access-Control-Allow-Headers. (get_category_index, line 0)

这是出现错误消息的原因,但修复此问题将无法解决您的问题。


但是,为什么有些请求有效而有些却没有呢?我在萤火虫中进行了一些调查,发现您正在尝试获取http://api.walander.se/json/get_category_index,它将您重定向到http://api.walander.se/json/get_category_index/第二个请求具有导致错误的不同的头集。

解决方案是在网址末尾添加一个额外的斜杠,以避免重定向。

requestService.get( 'get_category_index/', null , function(data) {

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

javascript的编译器在Web浏览器之间是否有所不同?

来自分类Dev

Paper.js事件行为在浏览器之间有所不同

来自分类Dev

静态Google地图坐标在不同的浏览器中有所不同

来自分类Dev

JavaScript删除对象在不同的浏览器中的行为有所不同

来自分类Dev

Bootstrap Navbar在不同的浏览器中的行为有所不同

来自分类Dev

静态Google地图坐标在不同的浏览器中有所不同

来自分类Dev

WebAPI SignalR在不同的浏览器上协商响应有所不同

来自分类Dev

Rem值在现代浏览器中呈现的方式有所不同吗?

来自分类Dev

与标准浏览器相比,Android Webview显示的移动页面有所不同

来自分类Dev

HTML实体在浏览器中呈现的方式有所不同

来自分类Dev

Kannada字体在Firefox和Chrome浏览器中有所不同

来自分类Dev

为什么JavaScript“删除”运算符在不同浏览器中的行为会有所不同?

来自分类Dev

Firefox和其他浏览器的事件监听器是否有所不同?

来自分类Dev

PDF文档文本在IE / Firefox / Chrome浏览器中的显示方式有所不同

来自分类Dev

自适应网站在移动浏览器中看起来有所不同

来自分类Dev

Eclipse插件中的SWT浏览器在Mac和Windows中的行为有所不同

来自分类Dev

邮递员和浏览器对我的中间件的行为有所不同

来自分类Dev

使用JavaScript创建元素或纯文本时,浏览器性能是否有所不同

来自分类Dev

在Chrome切换设备模式和移动浏览器中,ExtJS Web显示有所不同

来自分类Dev

为什么在使用两个不同的window.location.href分配时浏览器行为会有所不同?

来自分类Dev

iOS使用复选框的切换按钮在不同的浏览器中看起来有所不同

来自分类Dev

为什么与其他所有浏览器一样,我在Chrome中的利润率看起来有所不同

来自分类Dev

为什么与其他所有浏览器一样,我在Chrome中的利润率看起来有所不同

来自分类Dev

列表上的jQuery单击事件在Firefox和其他浏览器中的工作方式有所不同

来自分类Dev

本地主机上的Index.php在浏览器中的显示方式与在文件中看到的有所不同

来自分类Dev

情节提要板布局在模拟器和设备之间有所不同

来自分类Dev

Rails:ActiveRecord结果之间有所不同

来自分类Dev

Scrapy筛选器相同的URL在“ http”和“ https”中有所不同

来自分类Dev

DjangoRestFramework可浏览api在本地与在服务器上部署时看起来有所不同?

Related 相关文章

  1. 1

    javascript的编译器在Web浏览器之间是否有所不同?

  2. 2

    Paper.js事件行为在浏览器之间有所不同

  3. 3

    静态Google地图坐标在不同的浏览器中有所不同

  4. 4

    JavaScript删除对象在不同的浏览器中的行为有所不同

  5. 5

    Bootstrap Navbar在不同的浏览器中的行为有所不同

  6. 6

    静态Google地图坐标在不同的浏览器中有所不同

  7. 7

    WebAPI SignalR在不同的浏览器上协商响应有所不同

  8. 8

    Rem值在现代浏览器中呈现的方式有所不同吗?

  9. 9

    与标准浏览器相比,Android Webview显示的移动页面有所不同

  10. 10

    HTML实体在浏览器中呈现的方式有所不同

  11. 11

    Kannada字体在Firefox和Chrome浏览器中有所不同

  12. 12

    为什么JavaScript“删除”运算符在不同浏览器中的行为会有所不同?

  13. 13

    Firefox和其他浏览器的事件监听器是否有所不同?

  14. 14

    PDF文档文本在IE / Firefox / Chrome浏览器中的显示方式有所不同

  15. 15

    自适应网站在移动浏览器中看起来有所不同

  16. 16

    Eclipse插件中的SWT浏览器在Mac和Windows中的行为有所不同

  17. 17

    邮递员和浏览器对我的中间件的行为有所不同

  18. 18

    使用JavaScript创建元素或纯文本时,浏览器性能是否有所不同

  19. 19

    在Chrome切换设备模式和移动浏览器中,ExtJS Web显示有所不同

  20. 20

    为什么在使用两个不同的window.location.href分配时浏览器行为会有所不同?

  21. 21

    iOS使用复选框的切换按钮在不同的浏览器中看起来有所不同

  22. 22

    为什么与其他所有浏览器一样,我在Chrome中的利润率看起来有所不同

  23. 23

    为什么与其他所有浏览器一样,我在Chrome中的利润率看起来有所不同

  24. 24

    列表上的jQuery单击事件在Firefox和其他浏览器中的工作方式有所不同

  25. 25

    本地主机上的Index.php在浏览器中的显示方式与在文件中看到的有所不同

  26. 26

    情节提要板布局在模拟器和设备之间有所不同

  27. 27

    Rails:ActiveRecord结果之间有所不同

  28. 28

    Scrapy筛选器相同的URL在“ http”和“ https”中有所不同

  29. 29

    DjangoRestFramework可浏览api在本地与在服务器上部署时看起来有所不同?

热门标签

归档