簡體   English   中英

PUT請求僅在Chrome或Opera中生成SPDY協議錯誤?

[英]PUT request generates SPDY protocol errors only in Chrome or Opera?

我有一個Angular 1.5應用程序,它使用Angular $資源提供程序來處理對API后端的所有調用。 我最近添加了一個具有拖放界面的功能,一旦項目被放入特定的存儲桶,我就會向公共API方法執行包含所有相關數據的PUT請求以保存所述數據。

幾個月前我開發了它,甚至在一個特定版本的Mac版本的Chrome中發現了一個奇怪的錯誤(我們已經過去了2或3個版本),但除此之外它完美無缺。

我剛剛在自己做了一些測試之后就發布了它,但只是意識到Chrome和Opera瀏覽器都在PUT調用中出錯,API從未收到請求。 我得到的唯一信息是Chrome控制台中的此說明:

PUT https://www.phpdraft.com/api/draft/59/pick/5026/depth_chart/37 net::ERR_SPDY_PROTOCOL_ERROR

要親自看到這個,這里是可以進行調用或類似調用的URL: PHPDraft

我懷疑我的服務器使用HTTPS的事實可能是這里的問題,但到目前為止我在ERR_SPDY_PROTOCOL_ERROR上進行的Google搜索ERR_SPDY_PROTOCOL_ERROR是神秘的,聽起來並不像我的情況那樣。

以下是我在Angular應用程序中使用$resource來進行此PUT調用(以及所有其他調用類似)的方法:

angular.module('app').factory('api', function($resource, ENV) {
  return {
    DepthChartPosition: $resource(ENV.apiEndpoint + "commish/draft/:id/depthchartposition/:position_id", {
      draft_id: '@draft_id',
      position_id: '@position_id',
      draft_sport: '@draft_sport',
      manager_id: '@manager_id',
      pick_id: '@pick_id'
    }, {
      'update': {
        method: 'PUT',
        url: ENV.apiEndpoint + "draft/:draft_id/pick/:pick_id/depth_chart/:position_id"
      }
    })
  };
});

以下是上述代碼生成的請求本身的樣子:

General
Request URL:  https://www.phpdraft.com/api/draft/59/pick/5026/depth_chart/37

Request Headers
Accept:application/json, text/plain, */\*
Content-Type:  application/json;charset=UTF-8
Origin:  https://www.phpdraft.com
Referer:  https://www.phpdraft.com/draft/59/depth_chart
User-Agent:  Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36

Request Payload
{draft_id: "59", position_id: "37", pick_id: "5026"}

此請求的響應窗口為空,devtools將請求顯示為“已停止”。 有什么想法在這里發生了什么?

截至今年5月15日, Chrome不再支持SPDY,並且不再包含在當前版本中。

...從5月15日開始 - HTTP / 2 RFC的周年紀念日 - Chrome將不再支持SPDY。

...隨着Chrome 51的發布,將刪除SPDY和NPN支持。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM