"Your changes could not be saved."

It might still be the Adblock. You could test by removing it rather than just putting exceptions.


Anyway some diagnostic info and might help


Suggest :

  • Setting verbose and debug logging on the plex media server (settings / server / general / show advanced ) and save changes and restart plex media server to get fresh log file created
  • after restart of plex media server, load media manager and set verbose logging for web (settings / web / show advanced / debug / select verbose logging and save )
  • reproduce the problem and take a screenshot and then get the plex web app log (settings / web / show advanced / debug / view log), copy to text file and attach together with plex media server.log and screenshot including time it was taken. Upload using ‘more reply options’ and attach file.
  • upload list of all the browser add-ons


    Refer to the support pages on support.plex.tv for info on logs and plex web app logs

I don't have adblock on IE only on Chrome as I really dislike IE and only have it on my system for compatibility issues with some websites. This is on barebones Internet Explorer v11.0.9600.17498. 

Plex Media Server Log

Jan 05, 2015 08:59:53:371 [23000] DEBUG - Request: [192.168.1.242:4919] PUT /library/metadata/289?rating=X&contentRating=X&rating.locked=1&contentRating.locked=1 (3 live)
Jan 05, 2015 08:59:53:371 [23000] DEBUG -  * rating => X
Jan 05, 2015 08:59:53:371 [23000] DEBUG -  * contentRating => X
Jan 05, 2015 08:59:53:371 [23000] DEBUG -  * rating.locked => 1
Jan 05, 2015 08:59:53:371 [23000] DEBUG -  * contentRating.locked => 1
Jan 05, 2015 08:59:53:371 [23000] DEBUG - We found auth token (xxxxxxxxxxxxxxxxxxxx), enabling token-based authentication.
Jan 05, 2015 08:59:53:371 [23000] DEBUG - Came in with a super-token, authorization succeeded.
Jan 05, 2015 08:59:53:373 [23000] VERBOSE - Completed request: PUT /library/metadata/289?rating=X&contentRating=X&rating.locked=1&contentRating.locked=1: 400
Jan 05, 2015 08:59:59:606 [18900] DEBUG - Request: [192.168.1.242:4931] OPTIONS /library/metadata/289?rating.locked=0&contentRating.locked=0 (3 live)
Jan 05, 2015 08:59:59:606 [18900] DEBUG -  * rating.locked => 0
Jan 05, 2015 08:59:59:607 [18900] DEBUG -  * contentRating.locked => 0
Jan 05, 2015 08:59:59:607 [18900] VERBOSE - Completed request: OPTIONS /library/metadata/289?rating.locked=0&contentRating.locked=0: 2200
Jan 05, 2015 08:59:59:607 [21472] VERBOSE - Finished writing response for OPTIONS /library/metadata/289?rating.locked=0&contentRating.locked=0, 0 bytes in 0ms
Jan 05, 2015 08:59:59:610 [23000] DEBUG - Request: [192.168.1.242:4932] PUT /library/metadata/289?rating.locked=0&contentRating.locked=0 (3 live)
Jan 05, 2015 08:59:59:610 [23000] DEBUG -  * rating.locked => 0
Jan 05, 2015 08:59:59:610 [23000] DEBUG -  * contentRating.locked => 0
Jan 05, 2015 08:59:59:610 [23000] DEBUG - We found auth token (xxxxxxxxxxxxxxxxxxxx), enabling token-based authentication.
Jan 05, 2015 08:59:59:610 [23000] DEBUG - Came in with a super-token, authorization succeeded.
Jan 05, 2015 08:59:59:613 [23000] DEBUG - Encoding user fields for ID 289 as preface to save.
Jan 05, 2015 08:59:59:613 [23000] DEBUG - Updating metadata item (Aftermath) with ID 289
Jan 05, 2015 08:59:59:624 [23000] VERBOSE - Completed request: PUT /library/metadata/289?rating.locked=0&contentRating.locked=0: 2200
Jan 05, 2015 08:59:59:624 [21472] VERBOSE - Finished writing response for PUT /library/metadata/289?rating.locked=0&contentRating.locked=0, 0 bytes in 15ms
Jan 05, 2015 08:59:59:639 [18900] DEBUG - Request: [192.168.1.242:4933] OPTIONS /library/metadata/289?includeExtras=1 (3 live)
Jan 05, 2015 08:59:59:639 [18900] DEBUG -  * includeExtras => 1
Jan 05, 2015 08:59:59:639 [18900] VERBOSE - Completed request: OPTIONS /library/metadata/289?includeExtras=1: 2200
Jan 05, 2015 08:59:59:639 [21472] VERBOSE - Finished writing response for OPTIONS /library/metadata/289?includeExtras=1, 0 bytes in 0ms
Jan 05, 2015 08:59:59:642 [23000] DEBUG - Request: [192.168.1.242:4934] GET /library/metadata/289?includeExtras=1 (3 live)
Jan 05, 2015 08:59:59:642 [23000] DEBUG -  * includeExtras => 1
Jan 05, 2015 08:59:59:642 [23000] DEBUG - We found auth token (xxxxxxxxxxxxxxxxxxxx), enabling token-based authentication.
Jan 05, 2015 08:59:59:642 [23000] DEBUG - Came in with a super-token, authorization succeeded.
Jan 05, 2015 08:59:59:645 [23000] DEBUG - It took 0.000000 sec to serialize a list with 1 elements.
Jan 05, 2015 08:59:59:645 [23000] VERBOSE - Completed request: GET /library/metadata/289?includeExtras=1: 2200
Jan 05, 2015 08:59:59:645 [21472] VERBOSE - Finished writing response for GET /library/metadata/289?includeExtras=1, 0 bytes in 15ms

Capture.JPG

The Plex Media Server log shows no error being returned to Plex/Web

Where is the Plex Web App verbose log for this?

Forgot that one, here it is:

 

[correct one linked below] 

please delete this post

No debug verbose level logging

Hmm not sure why it didn't save the verbose on, reenabled it and it's logging now. Pretty big so I uploaded to my Google Drive as webverboselog.txt

https://drive.google.com/file/d/0BwdqYMHN7Nl-SFJUWWY3ZTA1THc/view?usp=sharing

Thanks - this is the relevant bit but we do not have matching Plex Media Server log to give a complete picture. Could you find the log that shows these requests hitting the server.

Need now to see if this error has been encountered before in such circumstances. Giving you the feedback now in case you manage to find a previous report of this. I am a bit busy at this minute

The error is Error 400 Bad Request

Plex/Web App requests and responses

{
    "type": "ajax",
    "url": "http://192.168.1.242:32400/library/metadata/289",
    "status": 200,
    "headers": {
      "X-Plex-Product": "Plex Web",
      "X-Plex-Version": "2.3.7",
      "X-Plex-Client-Identifier": "yql5lgjroyyc",
      "X-Plex-Platform": "Internet Explorer",
      "X-Plex-Platform-Version": "11.0",
      "X-Plex-Device": "Windows",
      "X-Plex-Device-Name": "Plex Web (Internet Explorer)",
      "X-Plex-Token": "TOKEN",
      "X-Plex-Username": "impact9",
      "Accept-Language": "en"
    },
    "response": "<?xml version=\"1.0\" encoding=\"UTF-8\"?> ",
    "time": "2015-01-05T15:40:46.831Z"
  },
  {
    "type": "ajax",
    "url": "http://192.168.1.242:32400/library/metadata/289?rating=X&contentRating=X&title.locked=1&thumb.locked=1&rating.locked=1&contentRating.locked=1",
    "status": 400,
    "headers": {
      "X-Plex-Product": "Plex Web",
      "X-Plex-Version": "2.3.7",
      "X-Plex-Client-Identifier": "yql5lgjroyyc",
      "X-Plex-Platform": "Internet Explorer",
      "X-Plex-Platform-Version": "11.0",
      "X-Plex-Device": "Windows",
      "X-Plex-Device-Name": "Plex Web (Internet Explorer)",
      "X-Plex-Token": "TOKEN",
      "X-Plex-Username": "impact9",
      "Accept-Language": "en"
    },
    "statusText": "error",
    "response": "Bad Request

400 Bad Request

",
    "time": "2015-01-05T15:40:50.734Z"
  },

Thanks for taking the time to go over these. Uploading the server log to my google drive:

https://drive.google.com/file/d/0BwdqYMHN7Nl-Z2xTZU1UTUdIY1E/view?usp=sharing

OK so it is the Plex Media Server that is returning this Error 400

Jan 05, 2015 09:40:46:814 [22696] DEBUG - Request: [192.168.1.242:10400] OPTIONS /library/metadata/289 (4 live)
Jan 05, 2015 09:40:46:814 [22696] VERBOSE - Completed request: OPTIONS /library/metadata/289: 2200
Jan 05, 2015 09:40:46:814 [18984] VERBOSE - Finished writing response for OPTIONS /library/metadata/289, 0 bytes in 0ms
 
Jan 05, 2015 09:40:46:815 [19060] DEBUG - Request: [192.168.1.242:10401] GET /library/metadata/289 (4 live)
Jan 05, 2015 09:40:46:816 [19060] DEBUG - We found auth token (xxxxxxxxxxxxxxxxxxxx), enabling token-based authentication.
Jan 05, 2015 09:40:46:816 [19060] DEBUG - Came in with a super-token, authorization succeeded.
Jan 05, 2015 09:40:46:819 [19060] DEBUG - It took 0.001000 sec to serialize a list with 1 elements.
Jan 05, 2015 09:40:46:819 [19060] VERBOSE - Completed request: GET /library/metadata/289: 2200
Jan 05, 2015 09:40:46:819 [18984] VERBOSE - Finished writing response for GET /library/metadata/289, 0 bytes in 15ms
 
Jan 05, 2015 09:40:49:065 [23296] VERBOSE - [IDLE] Removing (1->0) work item http_download - /photo/:/transcode?url=http%3A%2F%2F127.0.0.1%3A32400%2Flibrary%2Fmetadata%2F2794%2Fthumb%2F1419783361&width=150&height=225&minSize=1&X-Plex-Token=xxxxxxxxxxxxxxxxxxxx
Jan 05, 2015 09:40:49:065 [23296] VERBOSE - [IDLE] * http_download - /photo/:/transcode?url=http%3A%2F%2F127.0.0.1%3A32400%2Flibrary%2Fmetadata%2F2797%2Fthumb%2F1419783367&width=150&height=225&minSize=1&X-Plex-Token=xxxxxxxxxxxxxxxxxxxx - 1 active item(s)
Jan 05, 2015 09:40:50:033 [21596] VERBOSE - [IDLE] Removing (1->0) work item http_download - /photo/:/transcode?url=http%3A%2F%2F127.0.0.1%3A32400%2Flibrary%2Fmetadata%2F2797%2Fthumb%2F1419783367&width=150&height=225&minSize=1&X-Plex-Token=xxxxxxxxxxxxxxxxxxxx
Jan 05, 2015 09:40:50:033 [21596] VERBOSE - [IDLE] Server is now idle
 
Jan 05, 2015 09:40:50:727 [22696] DEBUG - Request: [192.168.1.242:10405] OPTIONS /library/metadata/289?rating=X&contentRating=X&title.locked=1&thumb.locked=1&rating.locked=1&contentRating.locked=1 (2 live)
Jan 05, 2015 09:40:50:727 [22696] DEBUG -  * rating => X
Jan 05, 2015 09:40:50:727 [22696] DEBUG -  * contentRating => X
Jan 05, 2015 09:40:50:727 [22696] DEBUG -  * title.locked => 1
Jan 05, 2015 09:40:50:727 [22696] DEBUG -  * thumb.locked => 1
Jan 05, 2015 09:40:50:727 [22696] DEBUG -  * rating.locked => 1
Jan 05, 2015 09:40:50:727 [22696] DEBUG -  * contentRating.locked => 1
Jan 05, 2015 09:40:50:727 [22696] VERBOSE - Completed request: OPTIONS /library/metadata/289?rating=X&contentRating=X&title.locked=1&thumb.locked=1&rating.locked=1&contentRating.locked=1: 2200
Jan 05, 2015 09:40:50:727 [18984] VERBOSE - Finished writing response for OPTIONS /library/metadata/289?rating=X&contentRating=X&title.locked=1&thumb.locked=1&rating.locked=1&contentRating.locked=1, 0 bytes in 0ms
 
Jan 05, 2015 09:40:50:730 [19060] DEBUG - Request: [192.168.1.242:10406] PUT /library/metadata/289?rating=X&contentRating=X&title.locked=1&thumb.locked=1&rating.locked=1&contentRating.locked=1 (2 live)
Jan 05, 2015 09:40:50:730 [19060] DEBUG -  * rating => X
Jan 05, 2015 09:40:50:730 [19060] DEBUG -  * contentRating => X
Jan 05, 2015 09:40:50:730 [19060] DEBUG -  * title.locked => 1
Jan 05, 2015 09:40:50:730 [19060] DEBUG -  * thumb.locked => 1
Jan 05, 2015 09:40:50:730 [19060] DEBUG -  * rating.locked => 1
Jan 05, 2015 09:40:50:730 [19060] DEBUG -  * contentRating.locked => 1
Jan 05, 2015 09:40:50:730 [19060] DEBUG - We found auth token (xxxxxxxxxxxxxxxxxxxx), enabling token-based authentication.
Jan 05, 2015 09:40:50:730 [19060] DEBUG - Came in with a super-token, authorization succeeded.
Jan 05, 2015 09:40:50:732 [19060] VERBOSE - Completed request: PUT /library/metadata/289?rating=X&contentRating=X&title.locked=1&thumb.locked=1&rating.locked=1&contentRating.locked=1: 400
 
Sorry to go on ... but I would check if any of the bundles (plugins) got involved with this. So please now take a copy of the Logs\PMS Plugin Logs out and zip it and upload

Do you want the entire folder? 

Wouldn't 400 mean it's just not downloading something from the net, not sure why it wouldn't allow an edit of local information.

Zip-

https://drive.google.com/file/d/0BwdqYMHN7Nl-Q3lOanRBdGZpejQ/view?usp=sharing

Do you want the entire folder? 

Wouldn't 400 mean it's just not downloading something from the net, not sure why it wouldn't allow an edit of local information.

Zip-

https://drive.google.com/file/d/0BwdqYMHN7Nl-Q3lOanRBdGZpejQ/view?usp=sharing

sorry - been trying to find out more info and previous reports of such an error when editing metadata but have not been able to find anything.

Error 400 usually means bad syntax in the request url

In this case it is the request

Request: [192.168.1.242:10406] PUT /library/metadata/289?rating=X&contentRating=X&title.locked=1&thumb.locked=1&rating.locked=1&contentRating.locked=1

But it managed to decode the request and break it down so i do not understand why

 

When I tested I had extra lines logged after the came in with a super token line 

Jan 05, 2015 18:28:51:157 [8716] DEBUG - Encoding user fields for ID 17438 as preface to save.
Jan 05, 2015 18:28:51:158 [8716] DEBUG - Updating metadata item (3:10 to Yuma) with ID 17438
and then completed the request
Jan 05, 2015 18:28:51:378 [8716] VERBOSE - Completed request: PUT /library/metadata/17438?contentRating=X&contentRating.locked=1: 2200
 
and I had some logging for it in the PMS Plugin Logs\com.plexapp.system.log
2015-01-05 18:28:51,066 (1fe8) :  DEBUG (runtime:717) - Handling request GET /system/bundle/media/flags/contentRating/X?t=1418760159
2015-01-05 18:28:51,072 (1fe8) :  DEBUG (runtime:814) - Found route matching /system/bundle/media/flags/contentRating/X
2015-01-05 18:28:51,102 (1fe8) :  DEBUG (runtime:106) - Sending packed state data (99 bytes)
2015-01-05 18:28:51,102 (1fe8) :  DEBUG (runtime:918) - Response: [200] DataObject, 1113 bytes
 
In your case there is a gap in time in the com.plexapp.system.log so we did not log any at the time
 
Actually looking more at your log i can see you succeeded in saving changes at 08:59 where it was unlocked
 
Jan 05, 2015 08:59:59:610 [23000] DEBUG - Request: [192.168.1.242:4932] PUT /library/metadata/289?rating.locked=0&contentRating.locked=0 (3 live)
Jan 05, 2015 08:59:59:610 [23000] DEBUG -  * rating.locked => 0
Jan 05, 2015 08:59:59:610 [23000] DEBUG -  * contentRating.locked => 0
Jan 05, 2015 08:59:59:610 [23000] DEBUG - We found auth token (xxxxxxxxxxxxxxxxxxxx), enabling token-based authentication.
Jan 05, 2015 08:59:59:610 [23000] DEBUG - Came in with a super-token, authorization succeeded.
Jan 05, 2015 08:59:59:613 [23000] DEBUG - Encoding user fields for ID 289 as preface to save.
Jan 05, 2015 08:59:59:613 [23000] DEBUG - Updating metadata item (Aftermath) with ID 289
Jan 05, 2015 08:59:59:624 [23000] VERBOSE - Completed request: PUT /library/metadata/289?rating.locked=0&contentRating.locked=0: 2200
Jan 05, 2015 08:59:59:624 [21472] VERBOSE - Finished writing response for PUT /library/metadata/289?rating.locked=0&contentRating.locked=0, 0 bytes in 15ms
 
Jan 05, 2015 08:59:59:639 [18900] DEBUG - Request: [192.168.1.242:4933] OPTIONS /library/metadata/289?includeExtras=1 (3 live)
Jan 05, 2015 08:59:59:639 [18900] DEBUG -  * includeExtras => 1
Jan 05, 2015 08:59:59:639 [18900] VERBOSE - Completed request: OPTIONS /library/metadata/289?includeExtras=1: 2200
Jan 05, 2015 08:59:59:639 [21472] VERBOSE - Finished writing response for OPTIONS /library/metadata/289?includeExtras=1, 0 bytes in 0ms
 
Jan 05, 2015 08:59:59:642 [23000] DEBUG - Request: [192.168.1.242:4934] GET /library/metadata/289?includeExtras=1 (3 live)
Jan 05, 2015 08:59:59:642 [23000] DEBUG -  * includeExtras => 1
Jan 05, 2015 08:59:59:642 [23000] DEBUG - We found auth token (xxxxxxxxxxxxxxxxxxxx), enabling token-based authentication.
Jan 05, 2015 08:59:59:642 [23000] DEBUG - Came in with a super-token, authorization succeeded.
Jan 05, 2015 08:59:59:645 [23000] DEBUG - It took 0.000000 sec to serialize a list with 1 elements.
Jan 05, 2015 08:59:59:645 [23000] VERBOSE - Completed request: GET /library/metadata/289?includeExtras=1: 2200
Jan 05, 2015 08:59:59:645 [21472] VERBOSE - Finished writing response for GET /library/metadata/289?includeExtras=1, 0 bytes in 15ms
 

what followed this some websocket errors and I wonder if they are relevant

Jan 05, 2015 09:00:29:638 [18984] DEBUG - WebSocket: processed 0 frame(s)
Jan 05, 2015 09:00:59:680 [18984] DEBUG - WebSocket: processed 0 frame(s)
Jan 05, 2015 09:01:29:875 [18984] DEBUG - WebSocket: processed 0 frame(s)
Jan 05, 2015 09:01:59:876 [18984] ERROR - WebSocket: Unexpected opcode 5
Jan 05, 2015 09:01:59:876 [18984] DEBUG - WebSocket: processed 0 frame(s)
Jan 05, 2015 09:01:59:876 [18984] DEBUG - WebSocket: client ack'd close request
Jan 05, 2015 09:01:59:876 [18984] DEBUG - Removing notification stream because of close.
Jan 05, 2015 09:01:59:876 [18984] DEBUG - WebSocket: processed 0 frame(s)
Jan 05, 2015 09:01:59:876 [21472] ERROR - handle_stream_read error 10058 A request to send or receive data was disallowed because the socket had already been shut down in that direction with a previous shutdown call

These have been reported before but the outcome is not in the forum topics raised.

What happens if you reboot the system? Does is still fail?

Can't remember if you said you have already tried resetting the system and framework bundles. If you have not, you could do that and also include the Media-Flags.bundle

Just adding some more info. This is an extract of all the attempt to make changes to the metadata information. A few of them succeeded  - shown in blue below

The ones that are successful are those where only the locked status was being saved - ie no change to actual content / rating etc. It does not help you but could be a clue to someone !

Line 3321: Jan 05, 2015 08:44:42:642 [18036] VERBOSE - Completed request: PUT /library/metadata/289?rating=X&contentRating=X: 400
Line 3339: Jan 05, 2015 08:49:29:778 [14572] VERBOSE - Completed request: PUT /library/metadata/289?rating=g&contentRating=g: 400
Line 3349: Jan 05, 2015 08:49:39:341 [6748] VERBOSE - Completed request: PUT /library/metadata/289?rating=H&contentRating=H&title.locked=1&rating.locked=0&contentRating.locked=0&thumb.locked=1: 400
Line 5884: Jan 05, 2015 08:52:00:748 [19284] VERBOSE - Completed request: PUT /library/metadata/289?rating=X&contentRating=X&title.locked=1&rating.locked=0&contentRating.locked=0&thumb.locked=1: 400
Line 11806: Jan 05, 2015 08:53:28:693 [14392] VERBOSE - Completed request: PUT /library/metadata/289?rating=X&contentRating=X: 400
Line 12794: Jan 05, 2015 08:54:17:535 [19940] VERBOSE - Completed request: PUT /library/metadata/25?contentRating=X&rating=X&rating.locked=0&contentRating.locked=0: 400
Line 13758: Jan 05, 2015 08:55:55:654 [20124] VERBOSE - Completed request: PUT /library/metadata/290?rating=X&contentRating=X&title.locked=1&thumb.locked=1&rating.locked=1&contentRating.locked=1: 400
Line 13775: Jan 05, 2015 08:56:01:798 [20124] VERBOSE - Completed request: PUT /library/metadata/290?title.locked=1&thumb.locked=1&rating.locked=0&contentRating.locked=0: 2200
Line 13798: Jan 05, 2015 08:56:09:365 [20124] VERBOSE - Completed request: PUT /library/metadata/290?rating=X&contentRating=X: 400
Line 13815: Jan 05, 2015 08:56:14:488 [20124] VERBOSE - Completed request: PUT /library/metadata/290?title.locked=1&thumb.locked=1&rating.locked=1&contentRating.locked=1: 2200
Line 13842: Jan 05, 2015 08:56:21:844 [11912] VERBOSE - Completed request: PUT /library/metadata/290?rating=X&contentRating=X&title.locked=1&rating.locked=0&contentRating.locked=0&thumb.locked=1: 400
Line 13855: Jan 05, 2015 08:56:25:977 [11912] VERBOSE - Completed request: PUT /library/metadata/290?rating.locked=1&contentRating.locked=1: 2200
Line 13869: Jan 05, 2015 08:56:30:878 [11912] VERBOSE - Completed request: PUT /library/metadata/290?rating=X&contentRating=X: 400
Line 14052: Jan 05, 2015 08:56:55:961 [20124] VERBOSE - Completed request: PUT /library/metadata/291?rating=X&contentRating=X&title.locked=1&rating.locked=1&thumb.locked=1&genre.locked=1&contentRating.locked=1: 400
Line 16217: Jan 05, 2015 08:57:20:092 [6580] VERBOSE - Completed request: PUT /library/metadata/292?rating=X&contentRating=X&title.locked=1&thumb.locked=1&genre.locked=1&rating.locked=1&contentRating.locked=1: 400
Line 18250: Jan 05, 2015 08:57:43:825 [6580] VERBOSE - Completed request: PUT /library/metadata/293?rating=X&contentRating=X&title.locked=1&thumb.locked=1&genre.locked=1&rating.locked=1&contentRating.locked=1: 400
Line 19042: Jan 05, 2015 08:58:07:693 [15004] VERBOSE - Completed request: PUT /library/metadata/294?rating=X&contentRating=X&title.locked=1&thumb.locked=1&genre.locked=1&rating.locked=1&contentRating.locked=1: 400
Line 20706: Jan 05, 2015 08:58:25:884 [15004] VERBOSE - Completed request: PUT /library/metadata/295?rating=X&contentRating=X&title.locked=1&thumb.locked=1&genre.locked=1&rating.locked=1&contentRating.locked=1: 400
Line 20739: Jan 05, 2015 08:58:44:472 [6336] VERBOSE - Completed request: PUT /library/metadata/296?rating=X&contentRating=X&title.locked=1&thumb.locked=1&genre.locked=1&rating.locked=1&contentRating.locked=1: 400
Line 20768: Jan 05, 2015 08:59:09:623 [17556] VERBOSE - Completed request: PUT /library/metadata/288?rating=X&contentRating=X&title.locked=1&thumb.locked=1&rating.locked=1&contentRating.locked=1: 400
Line 21131: Jan 05, 2015 08:59:53:373 [23000] VERBOSE - Completed request: PUT /library/metadata/289?rating=X&contentRating=X&rating.locked=1&contentRating.locked=1: 400
Line 21144: Jan 05, 2015 08:59:59:624 [23000] VERBOSE - Completed request: PUT /library/metadata/289?rating.locked=0&contentRating.locked=0: 2200
Line 21209: Jan 05, 2015 09:02:17:402 [23516] VERBOSE - Completed request: PUT /library/metadata/289?rating=X&contentRating=X&title.locked=1&thumb.locked=1&rating.locked=1&contentRating.locked=1: 400
Line 24779: Jan 05, 2015 09:35:04:350 [22232] VERBOSE - Completed request: PUT /library/metadata/289?rating=X&contentRating=X&title.locked=1&thumb.locked=1&rating.locked=1&contentRating.locked=1: 400
Line 24796: Jan 05, 2015 09:35:09:950 [8244] VERBOSE - Completed request: PUT /library/metadata/289?title.locked=1&thumb.locked=1&rating.locked=0&contentRating.locked=0: 2200
Line 25390: Jan 05, 2015 09:36:21:964 [19004] VERBOSE - Completed request: PUT /library/metadata/289?rating=X&contentRating=X&title.locked=1&thumb.locked=1&rating.locked=1&contentRating.locked=1: 400
Line 25400: Jan 05, 2015 09:36:28:003 [21128] VERBOSE - Completed request: PUT /library/metadata/289?title.locked=1&thumb.locked=1&rating.locked=0&contentRating.locked=0: 2200
Line 26687: Jan 05, 2015 09:40:50:732 [19060] VERBOSE - Completed request: PUT /library/metadata/289?rating=X&contentRating=X&title.locked=1&thumb.locked=1&rating.locked=1&contentRating.locked=1: 400
Line 26705: Jan 05, 2015 09:40:56:626 [19060] VERBOSE - Completed request: PUT /library/metadata/289?title.locked=1&thumb.locked=1&rating.locked=0&contentRating.locked=0: 2200

I tried rebooting the server and no improvement for metadata changes in IE or Chrome. 

Need advice from the plex team.

I would myself try SysInternals Process Monitor to see if there are any underlying errors that are giving rise to the bad request error 400. But if you do have ago be aware that it eats up system resources if left running for long time - so just have screen ready - start process monitor capture - do edit and get the error and stop the capture - the time stamps in the plex media server log will help establish where to start looking within the millions of captured events - the massive capture can be saved to pml file for all events and put on Dropbox or google drive

Rating needs to be numeric (0-10), so when you try to set rating=X, the server responds with a bad request error.

Thank you Eric.. Is their a support page we missed that gives the syntax?

OK there are examples here : https://support.plex.tv/hc/en-us/articles/201638786-Plex-Media-Server-URL-Commands

Well I don't quite understand it but for now, when I use a number (0-9) for rating, and a Letter for Content Rating, (G,PG, NC17, X) it's saving for now. If I don't use a rating # it won't save the content rating. 

Perhaps this info will help - I noticed that for Chrome, I'm seeing an extra key/value pair being appended to the URL when I say save changes. 

For example, Safari requests this URL:

http://10.0.0.2:32400/:/prefs?logDebug=0

While Chrome requests this URL:

http://10.0.0.2:32400/:/prefs?=myemailaddress%40gmail.com&LogVerbose=0 

The Chrome URL causes plex to respond with a 404 and message "cannot set preference value for unknown preference". I highly suspect LastPass autofill at the moment. Note that the key/value is misshaped - instead of key=myemailaddress, the key is empty - this may be why the plex team is having trouble identifying a root cause, because a missing key might be handled by the framework instead of their application code (although the error suggests otherwise, this could easily be getting caught by a try/catch that's a bit too aggressive) 

This should IMO not cause the Plex server to refuse to save any changes - instead it should ignore unknown options and process any known key. Perhap it can return a warning if they want to notify the end user that some of their changes may not have been saved

LastPass was also the issue for me. Disabling auto fill has solved it.